}User类 package test;public class User { private String code; private String name; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; }
} 入口类Mainimport org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import test.TestBean1; import test.User;public class Main { private TestBean1 bean1; public static void main(String[] args) { Main main = new Main(); main.test(); } public void test(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); bean1 = (TestBean1) ctx.getBean("bean1"); User user = new User(); user.setCode("001"); user.setName("aaa"); System.out.println(bean1.getString(user)); }}输出结果: 测试 aspect 001 bean1 执行了 bean1
相关包:
commons-logging-1.0.4.jar
log4j-1.2.14.jar
spring.jar
spring-aop.jar
aspectjrt.jar
aspectjweaver.jar
cglib-nodep-2.1_3.jar
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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="*" />
<aop:aspectj-autoproxy/>
<bean id="testAspect" class="aspect.TestAspect"/>
</beans>Aspect的类
package aspect;import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;import test.User;
@Aspect
public class TestAspect {
@Before("execution(* test.TestBean1.*(..)) &&"+"args(user,..)")
public void aspectTest(User user){
System.out.println("测试 aspect "+user.getCode());
}
}
TestBean1类
package test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component("bean1")
public class TestBean1 {
@Autowired
private Bean11 bean11;
public String getString(User user){
System.out.println("bean1 执行了");
return "bean1";
}
public Bean11 getBean11() {
return bean11;
}
public void setBean11(Bean11 bean11) {
this.bean11 = bean11;
}
}User类
package test;public class User {
private String code;
private String name;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
入口类Mainimport org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import test.TestBean1;
import test.User;public class Main {
private TestBean1 bean1;
public static void main(String[] args) {
Main main = new Main();
main.test();
}
public void test(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
bean1 = (TestBean1) ctx.getBean("bean1");
User user = new User();
user.setCode("001");
user.setName("aaa");
System.out.println(bean1.getString(user));
}}输出结果:
测试 aspect 001
bean1 执行了
bean1
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="*" />
<aop:aspectj-autoproxy/>
<bean id="testAspect" class="aspect.TestAspect"/>
</beans>
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 启用Aspect对annontation的支持 -->
<aop:aspectj-autoproxy/>
<!-- 将Aspect和目标对像配置到IOC中来 -->
<bean id="security" class="com.east.spring.proxy.SecurityHandler"></bean>
<bean id="userManager" class="com.east.spring.proxy.UserManagerImpl"></bean>
</beans>-------------
package com.east.spring.proxy;public interface UserManager {
public boolean addUser(String name, String password); public boolean deleteUser(int id); public boolean updateUser(int id, String name, String password); public String findUser(int id);
}
----------------------
package com.east.spring.proxy;
/**
* @author:East(张栋芳)
* @date:Nov 27, 2008
* @content:在没有进行安全性检查的时候,进行了增,删,查
*/
public class UserManagerImpl implements UserManager { public boolean addUser(String name, String password) {
System.out.println("-------------UserManagerImpl.addUser---------------");
return false;
} public boolean deleteUser(int id) {
System.out.println("-------------UserManagerImpl.deleteUser---------------");
return false;
} public String findUser(int id) {
System.out.println("-------------UserManagerImpl.findUser---------------");
return null;
} public boolean updateUser(int id, String name, String password) {
System.out.println("-------------UserManagerImpl.updateUser---------------");
return false;
}}