进行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>

Spring的配置文档applicationContext.xml
文档中最基本的配置就是各种bean的配置,bean的配置有几个是必不可少的
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/9123173jdbc的事务管理中要屏蔽其自动提交。还有,我们发现以上的属性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销毁时执行的方法。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐