Spring的配置文档applicationContext.xml
进行java EE开发最常用的就是Spring,Spring是一种轻量级的java开发框架,是一种javaEE的容器管理工具,Spring的核心就是IoC容器,Spring利用IoC容器来注册bean,对bean的管理能够实现java对象之间的依赖关系,从而成为完成其他复杂任务的基础。Spring建立在IoC容器核心功能之上的其他重要功能有:AOP(面向切面编程),事务管理,springMVC
·
进行java EE开发最常用的就是Spring,
Spring是一种轻量级的java开发框架,是一种javaEE的容器管理工具,Spring的核心就是IoC容器,Spring利用IoC容器来注册bean,对bean的管理能够实现java对象之间的依赖关系,从而成为完成其他复杂任务的基础。Spring建立在IoC容器核心功能之上的其他重要功能有:AOP(面向切面编程),事务管理,springMVC,ORM等,这些功能都在
Spring的核心配置文档applicationContext.xml中得以体现。
下面就简单总结下
applicationContext.xml的最基本最简单的结构。先上代码(最精简版):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
default-lazy-init="true" default-autowire="byName" default-init-method="" default-destroy-method="">
<!-- 用于读取properties文件,此处将数据库连接的用户名密码等存在jdbc.properties文件中 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>WEB-INF/jdbc.properties</value>
</list>
</property>
</bean>
<!-- 配置数据库连接 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="true" />
</bean>
<!-- 整合hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="hibernateProperties">
<value> hibernate.dialect=${hibernate.dialect}
hibernate.query.substitutions=true
hibernate.show_sql=true
hibernate.hbm2ddl.auto=none
</value>
</property>
<!-- 持久化类,注解形式 -->
<property name="annotatedClasses">
<list>
<value>nju.software.xkxt.data.dataobject.UserDO</value>
</property>
</bean>
<!-- 事务管理 注:事实上当事务管理器名字为transactionManager时,就不需要加transaction-manager属性 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 共用Dao -->
<bean id="userDao" class="nju.software.xkxt.data.dao.implement.UserDaoImpl"></bean>
<!-- 共用Service -->
<bean id="userService" class="nju.software.xkxt.service.implement.UserServiceImpl"></bean>
</beans>
1.sessionFactory
spring中ORM的配置。如果Dao层要使用hibernate,用到的hibernateTemplate,那么必须要建立sessionFactory类.sessionFactorybean是在ssh整合中hibernate托管给spring的,
因此配置文档中要配置sessionFactory,并且将sessionFactory装配到相应的Dao中。由于文档beans的默认配置中有default-autowire=byName这个默认配置,因此采用自动装配的方式,通过寻找名字sessionFactory来注入到每个Dao中。sessionFactory要装配dataSource,此处也不需要手动装配,只需要在文档中定义dataSource的bean即可。
2.dataSource
配置数据库连接,要装配到sessionFactory中。要声明数据库的连接路径url,数据库用户名username,密码password等。此处defaultAutoCommit=true是设置sql语句的自动提交,即执行一条sql,都立即提交,这样很方便,但是有时候会出现问题。因此就用到事务管理,参见事务管理
http://blog.csdn.net/dreamrealised/article/details/9123173,
jdbc的事务管理中要屏蔽其自动提交。还有,我们发现以上的属性url,username,password都是通过文档引入的,并不是写死在里面的,因此还需要配置一个bean就是
propertyConfigurer。
3.
propertyConfigurer
这个配置用于配置properties文件,主要的用处就是从properties文件中读取相应的属性和属性值到applicationContext文档(其实properties文件就是一个map,key-value键值对形式)。这样的好处是将用户名和密码等信息从applicationContext文档中抽取出来,安全而且修改方便。
4.其他的自定义的bean
在编写代码中,如果要应用spring提供的ioc的功能,就可以在
applicationContext文档中配置相应的dao层和service层的bean,配置起来相当方便,例子如上图。而且用起来也很方便。
5.transactionManager
以上几类bean都是必须要配置的。如果用到事务管理的相关内容,就需要配置transactionManagerbean,因此该bean并不是必须的,只是在用到的时候才进行配置。配置也相当简单如上图。具体的spring的事务管理的介绍请参见
http://blog.csdn.net/dreamrealised/article/details/9123173。在此不在赘述。
6.AOP
aop并不是必须的,什么时候用到拦截器的时候就对相应的bean进行配置,aop的介绍打算从新写一篇博文来介绍。
7.spring MVC
spring MVC请参见后续博文。
最后,beans的属性中有一个属性default-lazy-init,这个属性是用来设置bean的延迟实例化的,默认的值为false。如果
default-lazy-init=true,则说明该
bean在ApplicationContext实现在初始化时被提前实例化。如果设为false,
bean将告诉IoC容器在
ApplicationContext
启动时不进行实例化,而是在第一次被用到时才实例化。
另外bean的init-method属性(beans的default-init-method)指定bean
初始化时执行的方法;bean的distory-method属性(
default-destroy-method
)指定bean销毁时执行的方法。
更多推荐
已为社区贡献2条内容
所有评论(0)