`

Spring_Annotation_AOP

 
阅读更多
一。配置服务类组件
@Component
public class UserService {
	
	private UserDAO userDAO;
	

	public void add(User u){
		this.userDAO.save(u);
	}

	public UserDAO getUserDAO() {
		return userDAO;
	}
	@Resource(name="userDAOImpl")
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
}

@Resource自动装配

二。配置applicationContext.xml文件
<?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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
	<!-- 配置自动装配 AutowiredAnnotationBeanPostProcessor等接口,实现注入等功能 -->
	<context:annotation-config/>
	<!-- 配置扫描包路径 -->
	<context:component-scan base-package="com.job"/>
	<!-- 配置aop自动代理 -->
	<aop:aspectj-autoproxy/>

</beans>


三。编写切面类
@Aspect
@Component
public class LogInteceptor {
	
	@Before("execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))")
	public void beforeMethod(){
		System.out.println("Method start!");
	}
   @Pointcut("execution (public * com.job.dao..*.save(..))")
	public void method(){
	};
	
	@Before("method()")
	public void beforeMethod(){
		System.out.println("Method start!");
	}
	
	@Around("method()")
	public void around(ProceedingJoinPoint pjp) throws Throwable{
		System.out.println("around  before!");
		pjp.proceed();
		System.out.println("around after");
	}

}

注:首先一定要注册为组件@Component
    其次注册为切面
@Before("execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))")
@Before表示调用方法前执行。
execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))表示执行特定的类名.方法名方法

"execution (public * com.job.dao..*.save(..))"
..表示包含子包
*表示任何类


四。测试
public class UserServiceTest {

	@Test
	public   void test(){
		ApplicationContext ac =  new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService service = (UserService)ac.getBean("userService");
		User u = new User();
		u.setUsername("me haha  ");
		service.add(u);
	}
}


五。测试结果
Method start!
me haha  ---haha!


分享到:
评论

相关推荐

    spring_AOP.rar_876.aop_java aop_spring_aop

    2. ch20_aop_annotation:这部分内容可能是关于使用注解来定义和实现切面的教程。 3. ch18_aoptest:可能是一些AOP的测试案例,用于演示如何在实际应用中使用和测试AOP功能。 4. ch18_aop:可能是关于AOP基础理论或...

    Spring_aop_annotation.zip

    本实践项目以"Spring_aop_annotation.zip"为载体,展示了如何利用注解在Spring框架中实现AOP的功能。下面将详细阐述该项目中的关键知识点。 一、Spring AOP概念 AOP是Aspect Oriented Programming的缩写,它是一种...

    学习Spring笔记_AOP_Annotation实现和XML实现

    这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...

    Spring_Hibernate_JAVAX_Annotation注解

    ### Spring_Hibernate_JAVAX_Annotation 注解详解 #### 一、概述 本文将详细介绍与SSH(Spring+Struts+Hibernate)开发相关的注解。这些注解覆盖了多个领域,如AspectJ、Batch处理、Spring框架本身的功能(包括...

    Spring_1200_IOC_Annotation_Component

    标题中的"Spring_1200_IOC_Annotation_Component"表明我们即将探讨的是关于Spring框架的IoC(Inversion of Control,控制反转)和基于注解的组件管理。在这个主题下,我们将深入理解Spring如何通过注解来实现依赖...

    spring_hibernate_annotation的三种实现

    Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的对象关系映射(ORM)工具,简化了Java应用程序对数据库的操作。当结合使用时,...

    Spring_aop.rar_spring aop

    在Java Web开发中,Spring AOP(面向切面编程)是一种强大的工具,它允许开发者将关注点分离,提高代码的可重用性和可维护性。本文将深入探讨Spring AOP的核心概念、工作原理以及如何在实际项目中应用。 **1. ...

    Spring_AOP_before.rar_AOP@before怎么用_Before

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理等,并将这些关注点与业务逻辑分离。`@Before`是Spring AOP中一个重要的通知类型,用于在目标方法执行前执行...

    Spring_02_入门篇_AOP_简单实例

    **Spring AOP 入门篇:面向切面编程的注解与XML模式** 在软件开发中,Spring框架因其强大的功能和灵活性而广受欢迎,尤其是在企业级应用开发中。本教程将深入探讨Spring中的核心概念之一——面向切面编程(Aspect-...

    spring-nested-aop.zip_aop_spring aop

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分。它提供了一种模块化和声明式的方式来处理横切关注点,如事务管理、日志记录、性能监控等,这些关注点通常会分散在...

    学习Spring笔记_Annotation(注解)_Component

    本篇笔记主要关注Spring中的注解(Annotation)和@Component,这两大概念是Spring框架的重要组成部分,也是理解SpringIoC(控制反转)和AOP(面向切面编程)的基础。 首先,注解(Annotation)是Java提供的一种元...

    spring_day03_spring_

    "day03_eesy_05annotationAOP"着重讲解的是基于注解的AOP。Spring支持使用注解来声明切点(Pointcut)和通知,使得代码更加简洁,减少了XML配置的工作量。@Aspect、@Before、@After、@AfterReturning、@...

    spring aop实例annotation方法实现

    本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring AOP基础 Spring AOP是Spring框架的一部分,它提供了一种在运行时织入横切关注点(如日志、事务管理等)到目标对象的能力。AOP...

    SpringIOC_SpringMVC_SpringAnnotation_JPA

    标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个全面的企业级应用开发框架,提供了许多功能,包括依赖注入(Dependency ...

    aop_log.rar_spring aop

    在这个"aop_log.rar_spring aop"的压缩包中,我们很显然关注的是如何在Spring AOP中集成日志功能。 首先,理解AOP的核心概念是必不可少的。AOP包括切面(Aspect)、连接点(Join Point)、通知(Advice)、切入点...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)框架之一。Spring的核心特性之一是使用注解来简化配置,其中`@Autowired`和`@...

    struts2_1_8spring3hibernate3_5_1_annotation_XML都有

    Spring框架是企业级应用的支柱,它涵盖了依赖注入(DI)、面向切面编程(AOP)、数据访问、事务管理等多个领域。Spring3中,你可以使用注解如@Service、@Repository、@Controller来标记类的作用,简化配置。此外,...

Global site tag (gtag.js) - Google Analytics