• 你不知道的Spring配置文件


      Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。

           下面列举的是一份比较完整的配置文件模板,文档中各XML标签节点的基本用途也给出了详细的解释,这些XML标签节点在后续的知识点中均会用到,熟练掌握了这些XML节点及属性的用途后,为我们动手编写配置文件打下坚实的基础。

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <beans //整个配置的根节点,包含一个或者多个bean元素
      3 
      4        //最基本的命名空间定义
      5        xmlns="http://www.springframework.org/schema/beans"    
      6 
      7        //最基本的命名空间定义
      8        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
      9 
     10        //启动自动扫描或注解装配的命名空间
     11        xmlns:context="http://www.springframework.org/schema/context"    
     12 
     13        //启用AOP功能的命名空间
     14        xmlns:aop="http://www.springframework.org/schema/aop"    
     15 
     16        //启用声明事务的命名空间
     17        xmlns:tx="http://www.springframework.org/schema/tx"  
    18 //与上述命名空间定义相配套的schema定义文件的装载路径 19 xsi:schemaLocation="http://www.springframework.org/schema/beans 20 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 21 http://www.springframework.org/schema/context 22 http://www.springframework.org/schema/context/spring-context-2.5.xsd 23 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 24 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 25 26 <!-- 配置开启注解处理器 --> 27 <context:annotation-config/> 28 29 <!--开启组件自动扫描,扫描路径由base-package属性指定,代表扫描指定包名以及其子包 --> 30 <context:component-scan base-package="test"></context:component-scan> 31 32 <!--开启基于@AspectJ切面的注解处理器--> 33 <aop:aspectj-autoproxy/> 34 35 <!-- 引入配置文件,文件位置由location属性指定 --> 36 <context:property-placeholder location="xxx"/> 37 38 <!--使用class属性指定类的默认构造方法创建一个单实例Bean,名称由id属性指定 39 1.scope属性为 40 prototype时表示每次将生成新的实例,即原型模式 41 singleton时表示在每个Spring IOC容器中该bean定义只有一个对象实例 42 2.init-method:初始化时调用的方法名 43 3.destroy-method:对象销毁时调用的方法名 44 --> 45 <bean id="Bean实例名称" class="Bean类全名称" scope="prototype" init-method="init" destroy-method="close"> 46 47 <property name="Bean类中的属性名称" value="直接指定属性值"/> 48 49 <property name="Bean类中的属性名称" ref="要引用的Bean名称"/> 50 51 <property name="Bean类中的属性名称"> 52 <!--创建一个内部匿名Bean实例赋值给指定的属性,该匿名Bean实例无法被外界访问--> 53 <bean class="Bean类全名"/> 54 </property> 55 56 <property name="Bean类中的Set类型属性名称"> 57 <!-- 58 set标签用于创建一个Set类型的实例赋值给指定的Set类型属性,Set实例中的元素 59 通过value或ref子标签指定。对于基本数据类型的元素可由value标签生成,如果需 60 要引用其他Bean实例作为Set元素的话,可由ref标签指定。 61 --> 62 <set> 63 <value>要设置到set中的元素</value> 64 <ref bean="要引用的Bean名称"/> 65 </set> 66 </property> 67 68 <property name="Bean类中的List类型属性名称"> 69 <!-- 70 list标签用于创建一个List类型的实例赋值给指定的List类型属性,List实例中的元素 71 通过value或ref子标签指定。对于基本数据类型的元素可由value标签生成,如果需要引 72 用其他Bean实例作为List元素的话,可以由ref标签指定。 73 --> 74 <list> 75 <value>要设置到list中的元素</value> 76 <ref bean="要引用的Ben名称"/> 77 </list> 78 </property> 79 80 <property name="Bean类中的Map类型属性名称"> 81 <!-- 82 map标签用于创建一个Map类型的实例赋值给指定的Map类型属性,Map实例中的元素通过 83 entry标签指定。Map元素的键由entry标签的key属性直接指定,值则可由value或ref子 84 标签的key属性直接指定。对于基本数据类型的元素可由value标签生成,如果需要引用 85 其他Bean实例作为List元素的话,可以由ref标签指定。 86 --> 87 <map> 88 <entry key="map元素的key"> 89 <value>map元素的value</value> 90 </entry> 91 <entry key="map元素的key"> 92 <ref bean="要引用的Ben名称"/> 93 </entry> 94 </map> 95 </property> 96 97 <property name="Bean类中的Properties类型属性名称"> 98 <!-- 99 创建一个Properties类型的实例赋值给指定的Properties类型属性 100 --> 101 <props> 102 <!--Properties实例中的元素由prop标签生成,属性项元素的键由key属性指定,属性元素 103 的值可直接放置在prop标签中--> 104 <prop key="properties元素的key">properties元素的value</prop> 105 </props> 106 </property> 107 108 <property name="Bean类中要初始化为null的属性名称"> 109 <null/><!--null标签用于给需要赋值为null值得属性进行赋null值--> 110 </property> 111 112 <!-- 113 通过传入相应的构造参数进行Bean实例化,constructor-arg标签用于指定一个构造参数,其index 114 属性标明当前是第几个构造参数(从0开始),type属性声明构造参数的类型,构造参数的值如果是基 115 本类型可由value属性值直接指定,如果是对象的引用,则由ref属性指定。 116 --> 117 <constructor-arg index="从0开始的序号" type="构造参数的类型" value="构造参数的值"/> 118 <constructor-arg index="从0开始的序号" type="构造参数的类型" ref="要引用的Bean名称"/> 119 </bean> 120 121 <!--配置切面--> 122 <bean id="目标对象名称" class="目标对象全名"/> 123 <bean id="切面实例名称" class="切面类全名"/> 124 <aop:config> 125 <aop:aspect id="切面id" ref="要引用的切面实例名称"> 126 <aop:pointcut id="切入点名称" expression="切入点正则表达式"/> 127 <aop:before pointcut-ref="切入点名称" method="切面类中用作前置通知的方法名"/> 128 <aop:after-returing pointcut-ref="切入点名称" method="切面类中用作后置通知的方法名"/> 129 <aop:after-throwing pointcut-ref="切入点名称" method="切面类中用作异常通知的方法名"/> 130 <aop:after pointcut-ref="切入点名称" method="切面类中用作最终通知的方法名"/> 131 <aop:around pointcut-ref="切入点名称" method="切面类中用作环绕通知的方法名"/> 132 </aop:aspect> 133 </aop:config> 134 135 <!-- 配置事务管理器 --> 136 <bean id="事务管理器实例名称" class="事务管理器类全名"> 137 <property name="数据源属性名称" ref="要引用的数据源实例名称"> 138 </bean> 139 140 <!-- 配置一个事务通知 --> 141 <tx:advice id="" transaction-manager=""> 142 <tx:attributes> 143 <!-- 方法以get开头的,不使用事务 --> 144 <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/> 145 <!-- 其他方法以默认事务进行 --> 146 <tx:method name="*" /> 147 </tx:attributes> 148 </tx:advice> 149 150 <!-- 使用AOP技术实现事务管理 --> 151 <aop:config> 152 <aop:pointcut id="事务切入点名称" expression="事务切入点正则表达式"/> 153 <aop:advisor advice-ref="事务通知名称" pointcut-ref="事务切入点名称"/> 154 </aop:config> 155 156 <!--使用基于注解方式配置事务, --> 157 <tx:annotation-driven transaction-manager="事务管理器Bean的id"/> 158 159 </beans>
  • 相关阅读:
    OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
  • 原文地址:https://www.cnblogs.com/hafiz/p/5345967.html
Copyright © 2020-2023  润新知