在(三)里面。我们引入了 <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文件
<?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 命名空间。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/remote_roamer
分享到:
相关推荐
- **Spring2.5中文开发参考手册.chm**:这份文档会详细介绍Spring 2.5 的核心概念、配置、API使用以及如何在实际项目中应用Spring框架。 - **Hibernate_3.2.0_api.chm**:这份文档是Hibernate 3.2.0 的API参考,包含...
通过分析和运行这个`test`文件,可以更好地理解三大框架如何协同工作,以及注解如何简化配置。 总之,Struts2.0、Spring2.5和Hibernate3.2的结合,加上注解的支持,为Java Web开发提供了一个强大且灵活的解决方案。...
标题 "jersey+spring2.5+hibernate3.3+jpa" 指的是一种集成技术,将轻量级的RESTful服务框架Jersey、企业级应用框架Spring 2.5、持久层框架Hibernate 3.3以及Java Persistence API(JPA)结合在一起,以实现高效且...
这篇博客“Spring之Spring2.5集成Hibernate3.6”主要探讨了如何将两个经典的开源框架——Spring 2.5和Hibernate 3.6进行整合,以实现数据持久化的高效管理。 Spring 2.5版本是Spring框架的一个重要里程碑,它引入了...
- **数据持久化**:Hibernate简化了数据库操作,支持对象关系映射,提高了开发效率。 然而,随着技术的发展,SSH逐渐被Spring Boot、Spring MVC和MyBatis等现代框架取代,因为它们提供了更简洁的配置、更强大的功能...
在服务层,Spring 2.5的Transaction API也得到了增强,允许开发者通过注解来声明事务管理,简化了事务处理。此外,Spring 2.5还增强了对Web应用的支持,包括Spring MVC的改进,使得构建RESTful Web服务更为便捷。 ...
2. **配置JPA**:在Spring的配置文件中,需要配置数据源、JPA供应商(例如Hibernate)、实体扫描路径等。这可以通过XML配置或者基于注解的配置完成。 3. **定义实体**:创建表示数据库表的Java类,并使用JPA的注解...
本教程将探讨如何将Struts2.1、Spring2.5和Hibernate3.3这三大流行框架进行整合,以构建一个强大的Java Web应用程序。首先,我们先关注Spring2.5与Hibernate3.3的整合,这是整个集成的第一步。 Spring2.5是Spring...
【标题】"spring2.5 + jpa(hibernate3) 实例源码"涉及的核心技术是Spring 2.5框架与Java Persistence API (JPA)的整合,其中JPA的具体实现是Hibernate 3。这个实例提供了如何在Spring环境中配置和使用JPA进行数据库...
标题 "Spring2.5 + JPA(Hibernate)实现" 指的是在Spring框架的2.5版本中集成Java Persistence API (JPA) 和Hibernate ORM框架来管理数据库操作。这通常涉及利用Spring的IoC(Inversion of Control)和AOP(Aspect ...
《Spring2.5集成JPA深度解析》 在Java企业级开发中,Spring框架与Java Persistence API(JPA)的整合已经成为主流的持久层解决方案。本文将深入探讨Spring 2.5版本如何与JPA进行集成,以及在实际项目中的应用和配置...
在Java Web开发中,Spring、Hibernate和Struts是三个非常重要的框架,它们分别负责...不过,随着技术的发展,现代项目更倾向于使用Spring Boot、Spring MVC和MyBatis等更现代的框架组合,以简化配置和提高开发效率。
标题“Spring + JPA + Hibernate配置”涉及到的是Java开发中常用的三个框架——Spring、Java Persistence API (JPA) 和Hibernate的集成与配置。这是一份关于如何将这些框架结合使用的教程或参考资料,可能包含了实现...
在Java开发领域,Spring框架和Java Persistence API (JPA) 是两种非常重要的技术。...通过以上步骤,你可以实现Spring 2.5与JPA的整合,利用Hibernate作为持久层的实现,从而简化数据库访问并提高代码的可维护性。
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
Struts1、Spring2.5和Hibernate是Java Web开发中常用的三大框架,它们各自负责不同的职责,Struts1处理表现层逻辑,Spring2.5管理依赖注入和业务逻辑,Hibernate则专注于持久化层操作。将这三大框架整合在一起,可以...
标题 "spring2.5 + hibernate3.2 实例源码" 涉及到的是两个非常关键的Java企业级开发框架:Spring 2.5和Hibernate 3.2。这个实例源码提供了如何将这两个框架集成并进行实际应用的示例。 Spring 2.5是Spring框架的一...
Spring MVC、Hibernate 和 Spring 是Java开发...尽管当前版本已经更新至Spring 5和Hibernate 5,但Spring 2.5和Hibernate 3.0的组合仍广泛应用于许多现有项目中,理解其工作原理和配置方法对于Java开发者来说至关重要。