首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring AOP(Annotation)的应用

2012-11-07 
Spring AOP(Annotation)的使用配置spring的配置文件:为spring加入标注,自动装配及产生代理的支持?xml ver

Spring AOP(Annotation)的使用

配置spring的配置文件:为spring加入标注,自动装配及产生代理的支持

<?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">
?
?<context:annotation-config /><!-- 为spring加入标注支持 -->
??? <context:component-scan base-package="com" /><!-- 让spring在com.model包下自己去找bean -->
??? <aop:aspectj-autoproxy /><!-- spring容器自动 产生代理-->
</beans>

?

需要织入的业务逻辑:比如记录日志,安全校验等其他逻辑

package com.aop;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect//切面
@Component
public class LogInterceptor {
?//execution方法的切入语法,public void方法的返回值,save方法名,com.model.User参数的类型
?@Before("execution(public void com.dao.UserDaoImpl.save(com.model.User))")
?? public void before() {
??? System.out.println("method start");
?? }
?@AfterReturning("execution(public * com.dao..*.*(..))")
?public void afterReturning() {
??System.out.println("method afterReturning");
?}
}

测试类:

package com.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.model.User;
import com.service.UserService;

public class TestSpringIoc {

?
?public static void main(String[] args) {
??ApplicationContext? context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
?? User user = new User();
????? user.setPassword("sss");
????? UserService service = (UserService)context.getBean("userService");
????? service.add(user);
?}

}

?

备注:Spring的Aop需要aspectjrt.jar,aspectjrtweaver.jar两个jar包!!

热点排行