欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring的配置文件 applicationContext.xml

程序员文章站 2022-05-21 23:08:16
...

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>