Spring的配置文件 applicationContext.xml
1.文件头
1. <?xml version="1.0" encoding="UTF-8"?>
2. <beans xmlns="http://www.springframework.org/schema/beans"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xsi:schemaLocation="http://www.springframework.org/schema/beans
1.命名空间
xmlns
XML NameSpace的缩写,因为XML文件的标签名称都是自定义的,自己写的和其他人定义的标签很有可能会重复命名,而功能却不一样,Spring默认的命名空间就是http://www.springframework.org/schema/beans。Spring容器在解析xml文件时,会获取标签的命名空间来跟上述url比较,判断是否为默认命名空间。
xmlns:xsi
全名xml schema instance,是指具体用到的schema资源文件里定义的元素所准守的规范。即http://www.w3.org/2001/XMLSchema-instance这个文件里定义的元素遵守什么标准 。
xsi:schemaLocation
本文档里的xml元素所遵守的规范,这些规范都是由官方制定的,可以进你写的网址里面看版本的变动。xsd的网址还可以帮助你判断使用的代码是否合法。
2.标签属性
import标签
在实际开发过程中,一些大型项目会将配置信息按照不同的模块划分成多个配置文件,spring import标签就可以达到此目的,我们会经常看到如下的配置信息:
1. <import resource="file:..."/>
2. <import resource="classpath:..."/>
file:表示使用文件系统的方式寻找后面的文件(文件的完整路径)
classpath:相当于/WIN-INF/classes/,如果使用了classpath,那就表示只会到你的class路径中去查找文件
classpath*:表示不仅会在class路径中去查找文件,还会在jar中去查找文件
aop标签
<aop:aspectj-autoproxy/>
<aop:config>
<aop:aspect id = "aspectXML" ref="actionAspectXML">
<aop:pointcut id="anyMethod" expression="execution(* com.maowei.learning.aop.ActionImpl.*(..))"/>
<aop:before method="beforeMethod" pointcut-ref="anyMethod"/>
<aop:after method="afterMethod" pointcut-ref="anyMethod"/>
<aop:after-returning method="afterReturningMethod" pointcut-ref="anyMethod"/>
<aop:after-throwing method="afterThrowMethod" pointcut-ref="anyMethod"/>
<aop:around method="aroundMethod" pointcut-ref="anyMethod"/>
</aop:aspect>
</aop:config>
aop:aspectj-autoproxy声明自动为spring容器中那些配置@aspectJ切面的bean创建代理,织入切面。它有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,当配为true时,表示使用CGLib动态代理技术织入增强。不过即使proxy-target-class设置为false,如果目标类没有声明接口,则spring将自动使用CGLib动态代理。
bean标签
bean标签在配置文件中最常见,具体的格式有如下几种:
<bean id = "bean实例名" class="bean类全名" />
<bean id = "bean实例名" class="bean类全名" scope="prototype" />
<bean id = "bean实例名" class="bean类全名" init-method="初始化时调用的方法" destory-method="对象销毁时调用方法"/>
<bean id = "bean实例名" class="bean类全名" >
<property name="bean类的属性名称" ref="要引用的bean名称"/>
<property name="bean类的属性名称" value="直接指定属性值"/>
……
</bean>
<bean id = "bean实例名" class="bean类全名" >
<constructor-arg index="构造方法中参数的序号,从0开始计算" type="构造方法参数类型" value="参数值" />
<constructor-arg index="构造方法中参数的序号,从0开始计算" type="构造方法参数类型" ref="引用的bean名称" />
</bean>
tx标签
tx标签一般用于事务管理,常见的用法如下:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"
isolation="READ_COMMITTED"
propagation="REQUIRED"
timeout="100"/>
<tx:method name="get*"
read-only="100"/>
</tx:attributes>
</tx:advice>