文档章节

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

小强斋太
 小强斋太
发布于 2016/11/09 20:05
字数 332
阅读 1
收藏 0
点赞 0
评论 0

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>




 

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/09/08/5637174.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
IOC/AOP工具 - jBeanBox

jBeanBox是一个微形但功能较齐全的IOC/AOP工具适用于JAVA7+,利用了Java的初始化块实现的Java配置代替XML。jBeanBox采用Apache License 2.0开源协议。 其他一些IOC/AOP框架的问题: 1)Sprin...

yong9981 ⋅ 2016/07/25 ⋅ 14

Spring之使用注解配置Spring AOP

Spring框架通过注解配置AOP是基于AspectJ实现的。 Spring框架只是直接使用了AspectJ的注解,但并没有使用AspectJ的编译器或织入器,仍然是在运行时动态生成AOP代理。 aspectj使用的是静态代理...

Java攻城玩家 ⋅ 05/31 ⋅ 0

Spring AOP中自我调用的问题

前几天在做项目的时候同事说,在使用AOP进行拦截的时候发现有些方法有时候能输出拦截的日志有时候不输出拦截的日志。发现在单独调用这些方法的时候是有日志输出,在被同一个类中的方法调用的...

木叶之荣 ⋅ 2017/05/21 ⋅ 0

Spring编程式和声明式事务

1.编程式事务 1.1 编程式和声明式事务的区别 Spring提供了对编程式事务和声明式事务的支持,编程式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于用户将操作与事务...

梨加橙 ⋅ 前天 ⋅ 0

Spring归纳小结

前言 如果说有什么框架是Java程序员必然会学习、使用到的,那么Spring肯定是其中之一。本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结。 Spring的一些概念和思想 Spri...

张丰哲 ⋅ 2017/10/06 ⋅ 0

spring AOP实现业务日志管理

我们知道,在一个系统中,业务操作日志对我们很重要。那么以往我们更多的时候是写个方法,然后哪个模块需要加入日志,就引入这个接口。但是这种其实冗余了很多代码。今天我简单给大家介绍下采...

吕兵阳 ⋅ 2016/05/21 ⋅ 0

Spring IOC 容器源码分析系列文章导读

1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本。经过十几年的迭代,现在的 Spring 框架已经非常成熟了。Spring 包含了众多模块,包括但不限于...

coolblog ⋅ 05/30 ⋅ 0

Spring的核心机制

管理Bean 程序主要是通过Spring容器来访问容器中的Bean,ApplicationContext是Spring容器最常用的接口,该接口有如下两个实现类 ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件...

天蚕宝衣 ⋅ 2016/03/31 ⋅ 0

Spring基础知识汇总 Java开发必看

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

皮蛋瘦肉粥里没有粥 ⋅ 2015/08/28 ⋅ 0

Sping AOP用AspectJ注解的方式拦截不到SpringMVC的controller方法

现正做一个springMVC+spring+Hibernate的项目。我想实现的是,用户在没有登录的情况下输入任何URL会自动跳到login.jsp 。用户输入URL,URL请求会交由给springMVC的controller去处理,我想用A...

_zack ⋅ 2014/03/06 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java软件工程师简历中项目经验怎么写?

作者:暗灭 链接:https://www.zhihu.com/question/20695310/answer/180691302 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 直接给你贴个我自己的简历...

颖伙虫 ⋅ 22分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部