<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/cake?useUnicode=true&characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="99860315"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<!-- 切面(处理事务) -->
<bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="ShopDAO" class="com.xasxt.cake.po.ShopDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
<bean id="CakeDAO" class="com.xasxt.cake.po.CakeDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="OrderformDAO" class="com.xasxt.cake.po.OrderformDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="OrderitemDAO" class="com.xasxt.cake.po.OrderitemDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="CustomerDAO" class="com.xasxt.cake.po.CustomerDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="AddressDAO" class="com.xasxt.cake.po.AddressDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 原始业务类 Target -->
<bean id="shopBizTarget" class="com.xasxt.cake.biz.impl.ShopBiz">
<property name="shopDAO" ref="ShopDAO">
</property>
</bean>
<bean id="cakeBizTarget" class="com.xasxt.cake.biz.impl.CakeBiz">
<property name="cakeDAO" ref="CakeDAO"></property>
</bean>
<!-- 抽象Bean (模板) -->
<bean id="BizTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="tm"></property> <!-- 谁来代理 -->
<property name="proxyTargetClass" value="true"></property> <!-- 代理方式true:cglib, false:动态代理 -->
<property name="transactionAttributes">
<props>
<!-- 事务的传播行为 -->
<prop key="get*">PROPAGATION_REQUIRED, readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="shopBiz" parent="BizTemplate">
<property name="target" ref="shopBizTarget"></property> <!-- 代理谁? -->
</bean>
<bean id="cakeBiz2" parent="BizTemplate">
<property name="target" ref="cakeBizTarget"></property> <!-- 代理谁? -->
</bean>
<bean id="customerBizTarget" class="com.xasxt.cake.biz.impl.CustomerBiz">
<property name="customerDAO" ref="CustomerDAO"></property>
</bean>
<bean id="customerBiz" parent="BizTemplate">
<property name="target" ref="customerBizTarget"></property>
</bean>
<!-- action -->
<bean name="/shop" class="com.xasxt.cake.web.struts.action.ShopAction">
<property name="shopBiz" ref="shopBiz"></property>
</bean>
<bean name="/cake" class="com.xasxt.cake.web.struts.action.CakeAction">
<property name="cakeBiz" ref="cakeBiz"></property>
</bean>
<bean name="/cart" class="com.xasxt.cake.web.struts.action.CartAction">
<property name="cakeBiz" ref="cakeBiz"></property>
</bean>
<bean name="/login" class="com.xasxt.cake.web.struts.action.LoginAction">
<property name="customerBiz" ref="customerBiz"></property>
</bean>
<!-- 安全切面 -->
<bean id="safe" class="com.xasxt.cake.aspect.SafeAsepct"/>
<!-- 配置代理 -->
<bean id = "cakeBiz" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="cakeBiz2"></property>
<property name="interceptorNames" value="safe"></property>
</bean>
</beans>
分享到:
相关推荐
3. **配置XML**: 在Spring的配置文件(如`applicationContext.xml`)中,你需要启用AOP代理并声明切面。首先,启用AOP上下文: ```xml <aop:config> </aop:config> ``` 然后,声明切面,指定其类和通知: ```...
例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...
### Spring AOP与切面配置详解 在深入探讨Spring AOP(Aspect Oriented Programming)的配置实例之前,我们先简要回顾一下AOP的基本概念及其在软件开发中的作用。面向切面编程是一种编程范式,它旨在通过将横切关注...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、安全性等,从而解耦应用程序的核心业务逻辑。在Spring AOP中,关注点被模块化为独立的“切面”...
在使用Spring AOP时,我们可以通过XML配置或注解的方式来定义切面。例如,可以使用`@Aspect`注解定义一个切面类,`@Before`、`@After`等注解来声明通知,`@Pointcut`定义切点表达式。 在实际开发中,Spring AOP广泛...
**Spring AOP配置实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的核心组件之一,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP允许开发者定义“切面”,这些...
在Spring XML配置中,我们可以使用`<aop:config>`元素来定义切点表达式,然后使用`<aop:aspect>`元素来声明切面,并将通知方法与切点关联起来。此外,还可以使用注解驱动的配置,通过`@EnableAspectJAutoProxy`注解...
- `ApplicationConfig`:Spring配置文件,启用AOP并配置切面。 - 测试类:用来验证AOP功能是否正确工作。 通过运行这个项目,你可以看到AOP如何在实际场景中工作,如何通过切面和通知来增强业务逻辑。 总的来说,...
**Spring AOP 切面实例详解** 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种编程范式,它旨在提高代码的可复用性和模块化,通过将关注点分离来简化系统设计。Spring 框架提供了对 ...
在IT行业中,Spring框架是Java企业级应用开发的首选,而...在上述实例中,我们学习了如何定义切面、创建通知以及配置切入点,这些都是Spring AOP的基础。通过深入理解和实践,我们可以构建出更加健壮和易于维护的系统。
Spring AOP,全称Aspect-...总之,通过学习这个实例,你将能够掌握Spring AOP的基本使用,包括创建切面、定义通知、设置切入点,以及如何在实际项目中配置和应用这些概念。这将有助于你构建更加模块化、可维护的系统。
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...
Spring AOP的XML配置实例展示了如何将横切关注点(如日志、事务等)与业务逻辑解耦,提高了代码的可复用性和可维护性。这种编程模式在大型项目中尤其有用,因为它使得系统的结构更加清晰,每个组件都专注于自己的...
现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...
通过配置Spring的AOP配置,我们可以指定哪些类或方法需要被这个切面拦截。这样,无需在每个业务方法中添加日志代码,就能实现全局的日志记录。 总之,AOP是Spring框架的重要特性,它提供了一种有效管理和组织横切...
在IT行业中,Spring AOP(面向切面编程)和EhCache是两个非常重要的概念,它们在提升应用程序性能和管理缓存方面发挥着关键作用。本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java...