Spring Aop Annotation

实体:

 1 package com.bxw.aop.vo;
 2
 3 public class User {
 4     private String loginId;
 5
 6     public User() {
 7     }
 8
 9     public String getLoginId() {
10         return loginId;
11     }
12
13     public void setLoginId(String loginId) {
14         this.loginId = loginId;
15     }
16
17 }

User.java

dao:

1 package com.bxw.aop.dao;
2
3 public interface UserDao {
4     public void login(String id);
5 }

UserDao.java

 1 package com.bxw.aop.daoimpl;
 2
 3 import org.springframework.stereotype.Repository;
 4
 5 import com.bxw.aop.dao.UserDao;
 6 @Repository("userDao")
 7 public class UserDaoImpl implements UserDao{
 8
 9     public void login(String id) {
10         System.out.println("-----logining------"+id);
11     }
12 }

UserDaoImpl

service:

1 package com.bxw.aop.service;
2
3 public interface UserService {
4     public void login(String id);
5 }

UserService.java

 1 package com.bxw.aop.serviceimpl;
 2
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.beans.factory.annotation.Qualifier;
 5 import org.springframework.stereotype.Service;
 6
 7 import com.bxw.aop.dao.UserDao;
 8 import com.bxw.aop.service.UserService;
 9 @Service("userService")
10 public class UserServiceImpl implements UserService{
11     private UserDao userdao;
12
13     public UserDao getUserdao() {
14         return userdao;
15     }
16     @Autowired
17     public void setUserdao(@Qualifier(value="userDao") UserDao userdao) {
18         this.userdao = userdao;
19     }
20
21     public void login(String id) {
22         userdao.login(id);
23     }
24
25 }

UserServiceImpl.java

 1 package com.bxw.aop.serviceimpl;
 2
 3 import javax.annotation.Resource;
 4
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.beans.factory.annotation.Qualifier;
 7 import org.springframework.stereotype.Service;
 8
 9 import com.bxw.aop.dao.UserDao;
10 import com.bxw.aop.service.UserService;
11 @Service("userService")
12 public class UserServiceImpl implements UserService{
13     private UserDao userdao;
14
15     public UserDao getUserdao() {
16         return userdao;
17     }
18     @Resource(name="userDao")
19     public void setUserdao(UserDao userdao) {
20         this.userdao = userdao;
21     }
22
23     public void login(String id) {
24         userdao.login(id);
25     }
26
27 }

UserServiceImpl.java

两份代码只是UserDao注入时,注解不同

interceptor:

 1 package com.bxw.aop.interceptor;
 2
 3 import org.aspectj.lang.annotation.After;
 4 import org.aspectj.lang.annotation.Aspect;
 5 import org.aspectj.lang.annotation.Before;
 6 import org.springframework.stereotype.Component;
 7
 8 @Aspect
 9 @Component
10 public class UserInterceptor {
11     @Before("execution(public void com.bxw.aop.dao.UserDao.login(String))")
12     public void loginBefore(){
13         System.out.println("loginStart");
14     }
15     @After("execution(public void com.bxw.aop.dao.UserDao.login(String))")
16     public void loginAfter(){
17         System.out.println("loginOver");
18     }
19 }

UserInterceptor.java

织入点语法:

@Before("execution(public void com.bxw.aop.dao.UserDao.login(String))")

Test:

 1 package com.bxw.aop.Test;
 2
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5
 6 import com.bxw.aop.service.UserService;
 7 import com.bxw.aop.vo.User;
 8
 9 public class Test {
10     public static void main(String[] args) {
11         User user = new User();
12         user.setLoginId("Bao");
13
14         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
15         UserService userService = (UserService) ac.getBean("userService");
16         userService.login(user.getLoginId());
17     }
18 }

时间: 2024-11-16 17:13:22

Spring Aop Annotation的相关文章

Spring AOP annotation 错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error

Spring AOP注解形式简单实现

实现步骤: 1:导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-2.5.xsd" xml配置文件如下配置

Spring aop +自定义annotation

Spring aop +自定义注解 一.所需的jar 包: <!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!--spring ,springmvc--> <

Spring AOP + AspectJ Annotation Example---reference

In this tutorial, we show you how to integrate AspectJ annotation with Spring AOP framework. In simple, Spring AOP + AspectJ allow you to intercept method easily. Common AspectJ annotations : @Before – Run before the method execution @After – Run aft

Spring框架之Spring AOP

一.基于注解管理的AOP 1.Spring配置文件 <!-- 配置自动扫描包,自动扫描Bean组件,切面类 --> <context:component-scan base-package="com.zhoujian.spring.anno,com.zhoujian.spring.test"> <!-- <context:include-filter type="annotation" expression="org.a

Spring AOP中pointcut expression表达式解析 及匹配多个条件

Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args() @args() execution() this() target() @target() within() @within() @annotation 其中 execution 是用的最多的,其格式为: execution(modifiers-pat

JavaEE学习之Spring aop

一.基本概念 AOP——Aspect-Oriented Programming,面向切面编程,它是spring框架的一个重要组成部分.一般的业务逻辑都有先后关系,我们可以理解为纵向关系,而AOP关注的是横向关系,每一个关注点可以理解为一个横切面.例如我们的大部分代码都会涉及到日志记录,很多的数据库操作都会涉及到事务的创建和提交.那么从横向关注这些逻辑,他们都一个个的切面. AOP技术的具体实现,可以通过动态代理技术或者是在程序编译期间进行静态的"织入"方式.AOP经常使用的场景包括:日

Spring AOP 之 通知、连接点、切点、切面。

1:知识背景 软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点.而为直切关注点提供服务的,就是横切关注点. 2:面向切面的基本原理 什么是面向切面编程 横切关注点:影响应用多处的功能(安全.事务.日志) 切面: 横切关注点被模块化为特殊的类,这些类称为切面 优点: 每个关注点现在都集中于一处,而不是分散到多处代码中 服务模块更简洁,服务模块只需关注核心代码. AOP 术语 通知: 定义:切面也需要完成工作.在 AOP 术语中,切面的工作被称为通知. 工作内容:通知定义了

Spring AOP的实现原理

原文出处: Listen AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理.日志.缓存等等.AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ:而动态代理则以Spring AOP为代表.本文会分别对AspectJ和Spring AOP的实现进行分析和介绍. 使用AspectJ的编译时增强实现AOP 之前