前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你不知道的Spring配置文件

你不知道的Spring配置文件

作者头像
阿豪聊干货
发布2018-08-09 14:53:15
4560
发布2018-08-09 14:53:15
举报
文章被收录于专栏:Java后端技术Java后端技术

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

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

代码语言:javascript
复制
  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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档