注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置

原创 2008年10月01日 19:07:00
 在(三)里面。我们引入了 <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>这个bean 来处理@Autowired注解。
其实在spring 里面还有其他三个BeanPostProcessor 。总共有四个,分别是:
AutowiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
equiredAnnotationBeanPostProcessor 

但是直接在 Spring 配置文件中定义这些 Bean 显得比较笨拙。Spring 为我们提供了一种方便的注册这些 BeanPostProcessor 的方式,这就是 <context:annotation-config/>

Spring 2.1 添加了一个新的 context 的 Schema 命名空间,该命名空间对注释驱动、属性文件引入、加载期织入等功能提供了便捷的配置。我们知道注释本身是不会做任何事情的,它仅提供元数据信息。要使元数据信息真正起作用,必须让负责处理这些元数据的处理器工作起来。

这段代码就是 启用了这个命名空间后的applicationContext.xml文件
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:context="http://www.springframework.org/schema/context"
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.     xmlns:tx="http://www.springframework.org/schema/tx"
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  7.                                             http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-2.5.xsd
  8.                                             http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
  9.     >
  10.     <bean id="entityManagerFactory"
  11.         class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
  12.         <property name="persistenceUnitName" value="testerPU" />
  13.     </bean>
  14.     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  15.         <property name="entityManagerFactory" ref="entityManagerFactory" />
  16.     </bean>
  17.     <tx:annotation-driven transaction-manager="transactionManager" />
  18.     <bean id="transactionInterceptor"
  19.         class="org.springframework.transaction.interceptor.TransactionInterceptor">
  20.         <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
  21.         <property name="transactionManager">
  22.             <ref local="transactionManager" />
  23.         </property>
  24.         <property name="transactionAttributes">
  25.             <!-- 下面定义事务(指service里面的方法)传播属性 -->
  26.             <props>
  27.                 <prop key="insert*">PROPAGATION_REQUIRED</prop>
  28.                 <prop key="update*">PROPAGATION_REQUIRED</prop>
  29.                 <prop key="save*">PROPAGATION_REQUIRED</prop>
  30.                 <prop key="add*">PROPAGATION_REQUIRED</prop>
  31.                 <prop key="update*">PROPAGATION_REQUIRED</prop>
  32.                 <prop key="remove*">PROPAGATION_REQUIRED</prop>
  33.                 <prop key="delete*">PROPAGATION_REQUIRED</prop>
  34.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly
  35.                 </prop>
  36.                 <prop key="find*">PROPAGATION_REQUIRED,readOnly
  37.                 </prop>
  38.                 <prop key="load*">PROPAGATION_REQUIRED,readOnly
  39.                 </prop>
  40.                 <prop key="change*">PROPAGATION_REQUIRED</prop>
  41.                 <prop key="count*">PROPAGATION_REQUIRED</prop>
  42.                 <prop key="*">PROPAGATION_REQUIRED</prop>
  43.             </props>
  44.         </property>
  45.     </bean>
  46.     
  47.     <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->
  48.     <!--  这个Processor 已经被 <context:annotation-config/> 所简化   
  49.     <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
  50.     -->
  51.     <context:annotation-config/>
  52.     
  53.     
  54.     <!-- 定义自动代理BeanNameAutoProxyCreator -->
  55.     <bean id="beanNameAutoProxyCreator"
  56.         class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  57.         <!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
  58.         <property name="beanNames">
  59.             <list>
  60.                 <value>*Service</value>
  61.             </list>
  62.         </property>
  63.         <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器  -->
  64.         <property name="interceptorNames">
  65.             <list>
  66.                 <!-- 此处可增加其他新的Interceptor -->
  67.                 <value>transactionInterceptor</value>
  68.             </list>
  69.         </property>
  70.     </bean>
  71.     <bean id="AlcorTCountriesDAO" class="com.firemax.test.hibernate.AlcorTCountriesDAO">
  72.         <property name="entityManagerFactory" ref="entityManagerFactory" />
  73.     </bean>
  74.     <bean id="AlcorTProvincesDAO" class="com.firemax.test.hibernate.AlcorTProvincesDAO">
  75.         <property name="entityManagerFactory" ref="entityManagerFactory" />
  76.     </bean>
  77.     <bean id="AlcotTDistrictDAO" class="com.firemax.test.hibernate.AlcotTDistrictDAO">
  78.         <property name="entityManagerFactory" ref="entityManagerFactory" />
  79.     </bean>
  80.     <bean id="AlcorTCitysDAO" class="com.firemax.test.hibernate.AlcorTCitysDAO">
  81.         <property name="entityManagerFactory" ref="entityManagerFactory" />
  82.     </bean>
  83.     <bean id="CountryService" class="com.firemax.test.service.CountryService"/>
  84. </beans>

注意2段标红的内容,就是这次更新的配置内容。在配置文件中使用 context 命名空间之前,必须在 <beans> 元素中声明 context 命名空间。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java、Hibernate(JPA)常用注解整理

Java、Hibernate(JPA)常用注解整理
  • jianyuerensheng
  • jianyuerensheng
  • 2016年01月15日 14:32
  • 2399

Hibernate中实体映射时的命名策略(1)

有时候在实体类映射成数据库表时,我们并不太注意生成的表和列的名称,都是使用默认的名称策略,有的是干脆不使用`@Column`注解,直接使用字段名;有的则在`@Column`注解中使用`name`属性定...
  • lmy86263
  • lmy86263
  • 2016年09月23日 17:44
  • 3634

使用注解方式进行spring和hibernate整合

整合spring和hibernate需要五个要素,分别包括持久化的类, 数据源,SessionFactory, TransactionManager和持久化操作的DAO类。 持久化类: @Entity...
  • WitsMakeMen
  • WitsMakeMen
  • 2015年01月26日 14:17
  • 27164

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置

在(三)里面。我们引入了 
  • xiaokaibupabupa
  • xiaokaibupabupa
  • 2011年09月19日 10:47
  • 289

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置

虽然我们可以通过 @Autowired 在 Bean 类中使用自动注入功能,但是 Bean 还是在 applicatonContext.xml 文件中通过 进行定义 —— 在前面的例子中,我们还是在...
  • xiaokaibupabupa
  • xiaokaibupabupa
  • 2011年09月19日 10:48
  • 2331

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(三):通过 @Autowired的使用来消除 set ,get方法。

通过 (一),(二)的介绍。我们已经做了初步的简化程序。 但是在我们编写spring 框架的代码时候。一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套...
  • xiaokaibupabupa
  • xiaokaibupabupa
  • 2011年09月19日 10:47
  • 341

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中

以下几篇文章简单的介绍一下jpa 和 spring2.5 hibernate3.2 整合配置的一个过程。纯粹个人经验只谈。如果有错误,请各位留言指出。 本系列重点是涉及 配置过程 ,对注释的...
  • xiaokaibupabupa
  • xiaokaibupabupa
  • 2011年09月19日 10:45
  • 219

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(二):进一步消除 hibernate.cfg.xml

通过上面一步骤。我们简化了hibernate中扰人的 xxxxx.hbm.xml文件。那么是否可以再进行简化呢? 那么,我们在这一步骤的目的,就是把整个 hibernate.cfg.xml都给简化了...
  • xiaokaibupabupa
  • xiaokaibupabupa
  • 2011年09月19日 10:46
  • 244

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件

以下几篇文章简单的介绍一下jpa 和 spring2.5 hibernate3.2 整合配置的一个过程。纯粹个人经验只谈。如果有错误,请各位留言指出。 本系列重点是涉及 配置过程 ,...
  • twsghxs
  • twsghxs
  • 2014年11月10日 10:59
  • 143

转载:注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(六): 一些常用的数据库 注解

原文作者:remote_roamer 原文链接:http://blog.csdn.net/remote_roamer/article/details/3124731 学习注解的时候看到的一个讲...
  • wangyunzhong
  • wangyunzhong
  • 2012年02月08日 20:56
  • 461
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
举报原因:
原因补充:

(最多只允许输入30个字)