`

java aop 注解

 
阅读更多
package com.spring.aop.service;

public interface UserService {
void save(String name);
void save();

}


package com.spring.aop.service.impl;

import org.springframework.stereotype.Service;

import com.spring.aop.service.UserService;

@Service
public class UserServiceBean implements UserService {

@Override
public void save(String name) {
System.out.println("UserService 正在保存"+name);

}

@Override
public void save() {
System.out.println("UserService 正在保存。。。空参数");

}

}

package com.spring.aop.interceptor;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;


@Aspect
public class MyInterceptor {
@Pointcut("execution(* com.spring.aop.service..*(..)) ")
private void anyMethod(){};

@Before("anyMethod()")
public void beforeLog(){
System.out.println("method do before log...");
}

@After("anyMethod()")
public void afterLog(){
System.out.println("method do after log...");
}

//方法执行的前后调用 
    @Around("anyMethod()") 
    public Object around(ProceedingJoinPoint point) throws Throwable{ 
        System.out.println("begin around"); 
        Object object = point.proceed(); 
        System.out.println("end around"); 
        return object; 
    }


}

package com.spring.aop.test;

import static org.junit.Assert.*;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.aop.interceptor.MyInterceptor;
import com.spring.aop.service.UserService;

public class InterceptorTest {

@Autowired
private UserService userService;

@Test
public void test() {
fail("Not yet implemented");
}

@Test
public void interceptorTest(){
ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)cxt.getBean("userService");
userService.save();

}

}

beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<aop:aspectj-autoproxy/>

<bean id="myInterceptor" class="com.spring.aop.interceptor.MyInterceptor"></bean>
<bean id="userService" class="com.spring.aop.service.impl.UserServiceBean"></bean>
</beans>





分享到:
评论

相关推荐

    java aop、ioc 、注解 实例 Demo

    Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...

    SpringBoot AOP各种注解、自定义注解、鉴权使用案例(免费下载)

    首先,我们来看看SpringBoot AOP中的各种注解。最基础的是`@Aspect`,用于标记一个类为切面类,这个类中会包含切点(Pointcut)和通知(Advice)。切点定义了代码执行的特定位置,比如方法的执行,而通知则是在这些...

    注解+AOP优雅的实现java项目的接口参数校验(含源码)

    基于Spring boot + maven,以注解+AOP方式实现的java后端项目接口参数校验框架。迄今为止使用最简单、最容易理解的参数校验方案。博客地址:https://blog.csdn.net/weixin_42686388/article/details/104009771

    Java实现aop案例

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理、权限检查等。这样可以将这些关注点与核心业务逻辑分离,提高代码的可读性和可维护性。在...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    aop.zip_884AOP_java aop原理_javaaop原理

    Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务管理、性能监控等。AOP的核心思想是将横切关注点从核心业务...

    Spring AOP 注解方式

    在Spring AOP中,我们可以利用注解来实现切面,使得代码更加简洁、易读。本篇文章将深入探讨如何使用注解方式在Spring AOP中实现内部方法的拦截。 首先,理解AOP的基本概念至关重要。AOP的核心是切面(Aspect),它...

    java Spring aop所需Jar包

    Java Spring AOP(面向切面编程)是一种强大的设计模式,它允许程序员在不修改源代码的情况下,通过插入切面来增强或修改已有代码的行为。在Spring框架中,AOP主要用于日志记录、性能监控、事务管理等场景。下面将...

    spring AOP注解的应用1

    在Spring框架中,AOP(面向切面编程)是一...Spring AOP注解的应用使得切面编程更加简单直观,大大简化了对横切关注点的管理。在实际开发中,结合Spring提供的其他特性,如事务管理,可以构建出高效、健壮的后端系统。

    Aspectj,java,aop工具

    AspectJ是Java编程语言的一个重要扩展,它引入了面向切面编程(AOP)的概念,使得开发者能够更方便地处理横切关注点,如日志、事务管理、权限检查等。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将核心...

    spring aop注解版

    总结起来,Spring AOP注解版通过简单易懂的注解,使得面向切面编程变得更加直观和方便。它降低了横切关注点与业务逻辑之间的耦合度,提高了代码的可维护性和复用性。通过合理利用这些注解,开发者可以轻松地实现日志...

    spring aop 注解例子

    要启用注解驱动的 AOP,需要在 Spring 配置文件中添加 `&lt;aop:aspectj-autoproxy&gt;` 标签,或者在 Java 配置类中使用 `@EnableAspectJAutoProxy` 注解。 6. **运行环境** 由于这是一个简单的例子,因此运行环境的...

    java springAOP 事务+注释

    以上就是关于“Java Spring AOP 事务+注释”的详细解释,涵盖了Spring AOP的基本概念、事务管理机制以及`@Transactional`注解的使用。通过这些知识,我们可以更好地理解并实践Spring框架中的事务处理。

    spring aop注解方式、xml方式示例

    下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### 注解方式 #### 1. 定义切面(Aspect) 在Spring AOP中,切面是包含多个通知(advisors)的类。使用`@Aspect`注解标记切面类,例如: ```java @Aspect ...

    基于注解实现SpringAop

    基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop

    sping aop注解配置

    在Spring AOP中,注解配置是一种简洁且直观的使用方式,它极大地简化了配置过程,避免了XML配置的繁琐。以下是使用注解配置Spring AOP的关键知识点: 1. **切面(Aspect)**:切面是AOP的核心概念,它封装了多个...

    Aop.rar_aop_java aop

    AOP(Aspect Oriented Programming,面向切面编程)是Java编程领域中的一种设计模式,它扩展了传统的面向对象编程,允许程序员定义“方面”,这些方面可以包含关注点,如日志、事务管理、性能监控等,这些关注点通常...

    java AOP实现字段加密/解密

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理或安全性,从而提高代码的可重用性和模块化。在Java中,Spring框架提供了对AOP的强大支持。 ...

    使用Spring的注解方式实现AOP的细节

    5. **@EnableAspectJAutoProxy**: 在Spring配置类上添加此注解,启用基于Java代理的AOP支持,这样Spring会自动检测并处理带有@Aspect注解的类。 ```java @Configuration @EnableAspectJAutoProxy public class ...

    Aop注解示例

    总的来说,Spring的AOP注解使得切面编程变得更加便捷,让开发者能够更加专注于业务逻辑,而将通用性功能如日志、事务处理等进行有效隔离,提高了代码的可维护性和可读性。在实际项目中,合理利用AOP注解可以极大地...

Global site tag (gtag.js) - Google Analytics