Spring 属性配置

此文已由作者尧飘海授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

随着Spring的不断发展与完善,早期它的功能可能只看做是IOC(反转控制)的容器,或者其最大的亮点为DI(依赖注入),但是现在随着Spring 2.5.6 的Release发布及3.0 版的推出及其他Spring工程的发布,如(Spring Batch,web Flow),其功能越来越多。

通过上下文统一管理各种资源,通过相关设计模式完成属性的注入或实现方法,其次新的版本通过声明注入使得配置文件的大大简化,加上对其他的功能集成如Aop, Hibernate,Ibatis,JDBC,Toplink, Struts,Webwork,等等,使得和其他框架整合方便,Spring 里的设计方法也是以后需要学习的对象,总之通过此框架,使得开发人员把一些系统集成方面的工作简化了。目前大部分用的还是手工编写配置,框架人员可以通过编写相关的模板自动实现Spring配置文件的生成。

XML文件里一般配置主要分为以下几种:

1:属性配置,如:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="locations">
           <list>
              <value>WEB-INF/classes/mail.properties</value>
              <value>WEB-INF/classes/jdbc.properties</value>
           </list>
       </property>
    </bean>

直接指出属性文件地址,以后面的引用中就可以直接${key},方便修改。

2:数据源配置,如:

  <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}"/>
    </bean>

配置数据的连接方式,也可直接配置成JNDI的方式。

3:事务管理,如:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
    </bean>

对数据源进行事务管理。

4.持久层的配置,轻量级的有hibernate,ibatis等等,hibernate配置如下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
       <property name="dataSource" ref="dataSource" />
       <property name="mappingResources">
           <list>
              <value>com/netease/demo/bean/Food.hbm.xml</value>
              <value>com/netease/demo/bean/User.hbm.xml</value>
              <value>com/netease/demo/bean/Order.hbm.xml</value>
           </list>
           </property>
       <property name="hibernateProperties">
           <props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
              <prop key="hibernate.hbm2ddl.auto">update</prop>
           </props>
       </property>
       <property name="eventListeners">
           <map>
              <entry key="merge">
<bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>
              </entry>
           </map>
       </property>
    </bean>

5. AOP控制事务配置,即advisor和advice的設置,其中的切入點支持正则表达式的配置,設置如下:

  <aop:config>
              <aop:advisor pointcut="execution(* com.netease.demo..dao.*(..))" advice-ref="txAdvice" order="0" />
           </aop:config>
 
<tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
           <tx:method name="remove*"/>
           <tx:method name="store*"/>
           <tx:method name="*" read-only="true"/>
       </tx:attributes>
    </tx:advice>

6. 接下来的应该是系统的配置,如DAO,SERVICE等相关的配置,一般可以单独文件导入即可,此处只是一个简单的示例,我把二者合在一个文件,如:

   <bean id="userService" class="com.netease.demo.service.impl.UserServiceImpl" autowire="byName" />

通过相关代码,工程运行和工具对配置文件进行单元测试,如:JUNIT等,在此推荐unitils,只要简单的在类上面加入声明即可实现, 如:

@SpringApplicationContext({"applicationContext.xml", " applicationContext-dao.xml"})

另外还可直接声明spring配置的DAO或service,它会直接注入声明的实现,如:

@SpringBean("foodDao")

private FoodDao foodDao;

通过使用Spring再集成其他工具如JUNIT,TESTNG等,可以非常方便,快速的对依赖资源的使用进行测试用例进行开发和运行,明显的提高测试效率。

参考文献:

http://www.unitils.org/cookbook.html

http://www.springframework.org

http://www.unitils.org/

服务端

免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击

相关文章:
【推荐】 图表设计-远不止“好看”这么简单

原文地址:https://www.cnblogs.com/zyfd/p/9875973.html

时间: 2024-10-14 23:17:34

Spring 属性配置的相关文章

spring属性配置细节(2)

spring属性配置细节(2) Spring自动装配 XML配置里的Bean自动装配: Spring IOC容器可以自动装配Bean,需要做的是仅仅是在<bean>的autowire属性里指定自动装配的模式. 1.byName(根据名称自动装配):必须将目标Bean的名称和属性名设置的完全相同. (byName根据bean的名字和当前bean的setter风格的属性名进行自动装配 ,若有匹配的则进行自动装配,若没有匹配的,则不装配,值为null,不会出错.) <bean id="

spring属性配置细节(1)

spring属性配置细节(1) 在<constructor-arg value="240" type="int"></constructor-arg>中  ,"240"被自动转为int的240. 字面值 可用字符串表示的值,可以通过<value>元素标签或value属性进行注入. <constructor-arg type="int"> <value>240</

spring属性配置执行过程,单列和原型区别

Spring配置中,采用属性注入时,当创建IOC容器时,也直接创建对象,并且执行相对应的setter方法 Student.java 1 package com.scope; 2 3 public class Student { 4 private String name; 5 private String number; 6 public String getName() { 7 return name; 8 } 9 public void setName(String name) { 10 t

Spring Boot项目属性配置

接着上面的入门教程,我们来学习下Spring Boot的项目属性配置. 1.配置项目内置属性 属性配置主要是在application.properties文件里配置的(编写时有自动提示)这里我们将server的端口变为8888,路径加上HelloWorld: 在DeomApplication.java的页面时点击运行按钮,打开浏览器输入:http://localhost:8888/HelloWorld/hello 此时,控制台的输出信息也可以看到端口变成8888了: 之前的url已无效: 更改后

Spring框架笔记(四)——Spring容器的属性配置详解的六个专题

在spring IOC容器的配置文件applicationContext.xml里,有一些配置细节值得一提.我们将一些问题归结为以下几个专题. 专题一:字面值问题 配置的bean节点中的值,我们提出一个概念--字面值. 字面值:可用字符串表示的值. 字面值可以通过 <value> 元素标签或 value 属性进行注入. 基本数据类型及其封装类.String 等类型都可以采取字面值注入的方式 若字面值中包含特殊字符,可以使用 <![CDATA[]]> 把字面值包裹起来. 例如:(本文

Spring Boot 属性配置和使用

spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 Spring Boot - 配置排序依赖技巧 Spring Boot - DevTools 介绍 Spring Boot 支持多种外部配置方式 这些方式优先级如下: 命令行参数 来

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Spring Boot 属性配置和使用(转)

Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 入门 请看:http://blog.csdn.net/isea533/article/details/50278205 Spring Boot 支持多种外部配置方式 这些方式优先级如下: 命令行参数 来自java:comp/env的JNDI属性 Java系统属性(System.getPropert

Spring中配置属性文件

Spring中配置和读取Properties文件 public class PropertiesFactoryBeanextends PropertiesLoaderSupportimplements FactoryBean, InitializingBean Allows for making a properties file from a classpath location available as Properties instance in a bean factory. Can b