文档章节

Spring---->采用静态配置文件方式实现AOP

小强斋太
 小强斋太
发布于 2016/11/09 20:05
字数 332
阅读 18
收藏 0

精选30+云产品,助力企业轻松上云!>>>

spring对AOP的支持(采用配置文件的方式)

1、spring依赖库
              SPRING_HOME/dist/spring.jar
              SPRING_HOME/lib/jakarta-commons/commons-logging.jar
              SPRING_HOME/lib/log4j/log4j-1.2.14.jar
              SPRING_HOME/lib/aspectj/*.jar
2、配置如下

<aop:config>
		<aop:aspect id="security" ref="securityHandler">
			<aop:pointcut id="allAddMethod" expression="execution(* com.bjsxt.spring.UserManagerImpl.add*(..))"/>
			<aop:before method="checkSecurity" pointcut-ref="allAddMethod"/>
		</aop:aspect>
	</aop:config>

二、例子代码

UserManager.java

package com.ncepu.spring;


public interface UserManager {
	public void add(String name,String password);
	public void delete(int id);
	public void modify(String name,String password);
	public void find (int id);
}

UserManagerImpl.java

package com.ncepu.spring;

public class UserManagerImpl implements UserManager {

	@Override
	public void add(String name, String password) {
	System.out.print("添加用户");

	}

	@Override
	public void delete(int id) {
		System.out.print("删除用户");

	}

	@Override
	public void find(int id) {
		System.out.print("查找用户");
	}

	@Override
	public void modify(String name, String password) {
		System.out.print("修改用户");

	}

}

SecurityHandler.java

package com.ncepu.spring;



public class SecurityHandler {

	private void checkSecurity() {
		System.out.println("安全性检查");
	}

}

我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得参数值、方法名等等

package com.ncepu.spring;

import org.aspectj.lang.JoinPoint;


public class SecurityHandler {

	private void checkSecurity(JoinPoint jointpoint) {
		Object[] args=jointpoint.getArgs();
		
		for(int i=0;i<args.length;i++)
			System.out.println(args[i]);
		System.out.println(jointpoint.getSignature().getName());
		System.out.println(jointpoint.getTarget());
		System.out.println("安全性检查");
	}

}

Client.java

package com.ncepu.client;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ncepu.spring.UserManager;

public class Client {
	
	public static void main(String args[])
	{
		BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserManager userManager=(UserManager)factory.getBean("usermanager");
		userManager.add("wsz","ncepu");
	}

}

applicationContext.xml

<bean id="usermanager" class="com.ncepu.spring.UserManagerImpl"></bean>
	<bean id="securityHandler" class="com.ncepu.spring.SecurityHandler"></bean>

	<aop:config>
		<aop:aspect id="security" ref="securityHandler">
			<aop:pointcut id="allAddMethod"
				expression="execution(* com.ncepu.spring.UserManagerImpl.add*(..))" />
			<aop:before method="checkSecurity" pointcut-ref="allAddMethod" />
		</aop:aspect>
	</aop:config>




 

 

小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
私信 提问
加载中
请先登录后再评论。
Spring基础知识汇总 Java开发必看

Spring简介 Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关...

像风一样i
2018/08/14
0
0
Java 必看的 Spring 知识汇总!

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的...

Java技术栈
05/28
0
0
spring 纯注解方式 与AOP

spring注解方式 以前我也使用过纯注解方式.现在在这里做个记录  我们先认识几个我们都耳熟能详的注解  @configuration :从spring3.0这个注解就可以用于定义配置类,可以替换xml配置文件,相当...

osc_ejr00qw0
2019/04/27
4
0
Java 必看的 Spring 知识汇总!

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的...

Java技术栈
05/28
11
0
Spring 的 IOC 和 AOP

IOC(工厂模式):控制反转也叫依赖注入,IOC利用java反射机制 所谓控制反转是指:将类的创建和依赖关系写在Spring配置文件里,由配置文件注入,实现了松耦合 本来被调用者的实例是有调用者来...

无精疯
2019/11/10
123
0

没有更多内容

加载失败,请刷新页面

加载更多

使当前提交成为Git存储库中唯一的(初始)提交? - Make the current commit the only (initial) commit in a Git repository?

问题: I currently have a local Git repository, which I push to a Github repository. 我目前有一个本地Git存储库,我将其推送到Github存储库。 The local repository has ~10 commits, ......

javail
36分钟前
14
0
IntelliJ IDEA 默认快捷键大全

Remember these Shortcuts 常用 功能 快捷键 备注 ● Smart code completion Ctrl + Shift + Space - ● Search everywhere Double Shift - ● Show intention actions and quick-fixes Alt......

巨輪
今天
24
0
Hacker News 简讯 2020-07-14

更新时间: 2020-07-14 02:01 Chipmaker Analog Devices to Acquire Maxim Integrated for $21B - (reuters.com) 芯片制造商模拟设备公司将以210亿美元收购Maxim Integrated 得分:92 | 评论:......

FalconChen
今天
129
0
绕过移动端系统限制的 dlopen 库 byOpen

byOpen是一个绕过移动端系统限制的增强版dlfunctions库。 支持特性 Android 支持App中加载和使用Android系统库接口(即使maps中还没有被加载也支持)。 Android 7以上dlopen, System.load都是...

shzwork
昨天
31
0
Golang学习系列第二天:变量、常量、数据类型和流程语句

继golang第一天后,今天学习下golang的变量、常量、数据类型和控制流语句。 做过其他编程语言(比如JavaScript,java,python)项目的话,其实很好理解变量、常量、数据类型和控制流。 变量也...

董广明
昨天
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部