注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四

在(三)里面。我们引入了 <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/& gt;这个bean 来处理@Autowired注解。

其实在spring 里面还有其他三个BeanPostProcessor 。总共有四个,分别是:
AutowiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
equiredAnnotationBeanPostProcessor  

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

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

这段代码就是 启用了这个命名空间后的applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                                                http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-2.5.xsd
                                                http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
        >
  
  
       <bean id="entityManagerFactory"
           class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
           <property name="persistenceUnitName" value="testerPU" />
       </bean>
       <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
  
       <tx:annotation-driven transaction-manager="transactionManager" />
  
       <bean id="transactionInterceptor"
           class="org.springframework.transaction.interceptor.TransactionInterceptor">
           <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
           <property name="transactionManager">
               <ref local="transactionManager" />
           </property>
           <property name="transactionAttributes">
               <!-- 下面定义事务(指service里面的方法)传播属性 -->
               <props>
                   <prop key="insert*">PROPAGATION_REQUIRED</prop>
                   <prop key="update*">PROPAGATION_REQUIRED</prop>
                   <prop key="save*">PROPAGATION_REQUIRED</prop>
                   <prop key="add*">PROPAGATION_REQUIRED</prop>
                   <prop key="update*">PROPAGATION_REQUIRED</prop>
                   <prop key="remove*">PROPAGATION_REQUIRED</prop>
                   <prop key="delete*">PROPAGATION_REQUIRED</prop>
                   <prop key="get*">PROPAGATION_REQUIRED,readOnly
                   </prop>
                   <prop key="find*">PROPAGATION_REQUIRED,readOnly
                   </prop>
                   <prop key="load*">PROPAGATION_REQUIRED,readOnly
                   </prop>
                   <prop key="change*">PROPAGATION_REQUIRED</prop>
                   <prop key="count*">PROPAGATION_REQUIRED</prop>
                   <prop key="*">PROPAGATION_REQUIRED</prop>
               </props>
           </property>
       </bean>
       
       <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->
       <!--  这个Processor 已经被 <context:annotation-config/> 所简化   
       <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
       -->
       <context:annotation-config/>
       
       
       <!-- 定义自动代理BeanNameAutoProxyCreator -->
       <bean id="beanNameAutoProxyCreator"
           class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
           <!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
           <property name="beanNames">
               <list>
                   <value>*Service</value>
               </list>
           </property>
           <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器  -->
           <property name="interceptorNames">
               <list>
                   <!-- 此处可增加其他新的Interceptor -->
                   <value>transactionInterceptor</value>
               </list>
           </property>
       </bean>
  
  
  
  
  
       <bean id="AlcorTCountriesDAO" class="com.firemax.test.hibernate.AlcorTCountriesDAO">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
       <bean id="AlcorTProvincesDAO" class="com.firemax.test.hibernate.AlcorTProvincesDAO">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
       <bean id="AlcotTDistrictDAO" class="com.firemax.test.hibernate.AlcotTDistrictDAO">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
       <bean id="AlcorTCitysDAO" class="com.firemax.test.hibernate.AlcorTCitysDAO">
           <property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
  
       <bean id="CountryService" class="com.firemax.test.service.CountryService"/>
  
  
   </beans>
  注意2段标红的内容,就是这次更新的配置内容。在配置文件中使用 context 命名空间之前,必须在 <beans> 元素中声明 context 命名空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值