`
8366
  • 浏览: 813311 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第19讲 --使用Spring配置文件实现AOP

阅读更多

 

上面我们是使用注解的方式实现spring AOP的,下面我们使用Spring的配置文件实现AOP

 

 

步骤:

 

1.首先写切面类,不在需要任何 注解 了

package cn.com.xinli.service;

import org.aspectj.lang.ProceedingJoinPoint;
/**
 * 切面
 *
 */
public class MyInterceptor {	
	public void doAccessCheck() {
		System.out.println("前置通知");
	}

	public void doAfterReturning() {
		System.out.println("后置通知");
	}
	
	public void doAfter() {
		System.out.println("最终通知");
	}
	
	public void doAfterThrowing() {
		System.out.println("例外通知");
	}
	
	public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("进入方法");
		Object result = pjp.proceed();
		System.out.println("退出方法");
		return result;
	}
	
}

 

(2) 在beans.xml 中配置 切面,定义业务bean

 

<?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:context="http://www.springframework.org/schema/context" 
       xmlns:aop="http://www.springframework.org/schema/aop"      
       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/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
  
			
           <aop:aspectj-autoproxy proxy-target-class="true"/>
           <!--切面和业务bean都需要交给容器管理--> 
            <bean id="myInterceptor" class="cn.com.xinli.service.MyInterceptor"></bean>
        	<bean id="personService" class="cn.com.xinli.service.impl.PersionServiceBean"></bean>
        	 <aop:config>
        	 <!-- 定义一个切面 -->
        	 <aop:aspect id="asp" ref="myInterceptor">
        	 <!-- 定义切入点,定义拦截表达式,前置通知,后置通知,等.. -->
        		<aop:pointcut id="mycut" expression="execution(* cn.com.xinli.service..*.*(..))"/>
        		<aop:before pointcut-ref="mycut" method="doAccessCheck"/>
        		<aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>
			  	<aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>
			  	<aop:after pointcut-ref="mycut" method="doAfter"/>
			  	<aop:around pointcut-ref="mycut" method="doBasicProfiling"/>
        	</aop:aspect>
        </aop:config>
      
       
                                                        
		
		           
       

        
     <!-- 扫描 cn.com.xinli包下以及子包种有 @Service @Controller @Repository @Component
          注解的类,一旦发现,则将其纳入到spring容器中管理
     -->
	
	<!--       
	<bean id="persionDao" class="cn.com.xinli.dao.impl.PersionDaoBean"></bean>                                                               
	<bean id="persionServiceBean" class="cn.com.xinli.service.impl.PersionServiceBean" init-method="init" destroy-method="destory">
		 -->  
		<!--  
		<constructor-arg index="0" type="cn.com.xinli.dao.PersionDao" ref="persionDao"></constructor-arg>
		<constructor-arg index="1" value="huxl"></constructor-arg>
		-->
	
	
	
	<!-- 
    <bean id="persionServiceBean2" class="cn.com.xinli.service.impl.PersionServiceBeanFactory" factory-method="createPersionServiceBean"/>
    
    <bean id="PersionServiceBeanFactory" class="cn.com.xinli.service.impl.PersionServiceBeanFactory"></bean>
    <bean id="persionServiceBean3" factory-bean="PersionServiceBeanFactory" factory-method="createPersionServiceBean2"></bean>
     -->
</beans>

 

 

测试::

 

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		PersionSevice ps=(PersionSevice)ctx.getBean("personService");
		
		//ps.save("huxl");
		ps.getPersonName(1);

 

结果: 

前置通知:
进入方法
我是getPersonName()方法
后置通知
最终通知
退出方法

 

 

 

分享到:
评论

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...

    spring_in_action-sixth-edition.pdf

    Spring 配置包括使用配置文件、使用注解配置、使用 Java 配置等方式。 12. Spring AOP Spring AOP 是指使用 Spring 框架的面向方面编程机制,帮助开发者快速构建 Aspect-oriented 编程的应用程序。Spring AOP 提供...

    spring aop

    在提供的压缩包文件中,可能包含了关于Spring AOP的详细教程或示例代码,如SpringAOP_15-16.rar可能涵盖了第15到16章节的内容,可能讲解了基本的AOP概念和配置;springAOP_17-18.rar可能是关于AOP通知类型和切点...

    《企业应用架构设计-Struts2 Hibernate3 Spring 2》谢星星 第十九章整合源码

    第十九章的主题是“Struts2 Hibernate3整合源码”,这涉及到Java Web开发中的核心技术和实践。以下是关于这个主题的详细知识点: 1. **Struts2框架**:Struts2是基于MVC(Model-View-Controller)模式的Java Web...

    Spring攻略PDF版

    因为上传大小的限制,分为两部分上传,这是第二部分,第一部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 ... 第19章 Spring中的脚本编程 

    Spring ActionScript 开发教程

    - XML配置文件用于定义Spring容器中的Bean及其依赖关系。 - 了解如何使用XML文件来配置Bean的生命周期、依赖注入等。 - **Part4: 使用容器载入配置文件** - 学习如何让Spring容器读取并解析XML配置文件。 - 这...

    springlive(共11章)

    11. **第十一章:Spring Cloud** - 微服务概述:介绍微服务架构,以及Spring Cloud在其中的作用。 - Spring Cloud组件:了解Eureka、Zuul、Ribbon、Hystrix等核心组件的用法,构建微服务生态。 通过阅读《Spring...

    Spring攻略中文版PDF

    因为上传大小的限制,分为两部分上传,这是第一部分,第二部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 ... 第19章 Spring中的脚本编程 

    Spring攻略英文版(附带源码)

    Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念  第1章 控制反转和容器   1.1 使用容器管理组件   1.1.1 问题描述  ... 第19章 Spring中的脚本编程 

    Pro Spring3

    #### 十九、Spring 测试(第19章) - **单元测试**:探讨如何使用 Spring 进行单元测试。 - **集成测试**:讲解如何进行集成测试。 - **Mock 对象**:介绍如何利用 Mock 对象简化测试过程。 #### 二十、Spring ...

    spring framework 3 教程

    #### 第十九章:Spring框架的AOP - **AOP术语:** - 包括切面、连接点、通知等概念。 - **通知类型:** - 如前置通知、后置通知等,用于定义在特定连接点执行的行为。 以上是对Spring Framework 3教程的详细知识...

    spring4源码1

    2. 第十讲:可能涵盖了Spring4的核心概念,如IoC(Inversion of Control)容器和Bean的生命周期管理。 3. 第九讲:可能讲解了Spring的AOP机制,包括切面、通知类型和代理模式。 4. 第六讲:可能涉及Spring的MVC框架...

    spring框架案例学习文档笔记

    - **Annotation介绍**:使用注解的方式可以简化Spring配置文件的编写。 - **关键注解**: - `@Autowired`:自动注入依赖。 - `@Qualifier`:指定注入的具体Bean。 - `@Resource`:根据名称查找并注入依赖。 - `@...

    spring2.5_学习笔记.

    - **配置文件**:创建 `applicationContext.xml` 文件,这是 Spring 的主要配置文件。 - **引入 Jar 包**:添加 Spring 相关的核心库和其他依赖。 - **测试代码**:编写单元测试以验证 Spring 环境是否正确搭建。...

    spring2.5 学习笔记

    - **建立 Spring 的配置文件**:创建 `applicationContext.xml` 文件作为 Spring 的核心配置文件。 - **引入 Spring 的 jar 包**:添加 Spring 框架所需的依赖库到项目的 classpath 中。 - **编写测试代码**:...

    spring chm文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring 2.0 开发参考手册

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring中文帮助文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    精通spring源代码下载

    第十六章至第十九章可能涵盖了Spring的其他关键特性,如Spring Security(安全框架),Spring Boot(快速启动框架)和Spring Cloud(微服务生态)。这些章节会讲解如何利用Spring提供的工具来实现认证、授权,以及...

    Spring API

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

Global site tag (gtag.js) - Google Analytics