位置: 编程技术 - 正文

Java Spring AOP的两种配置方式(spring中aop实现)

编辑:rootadmin
第一种:注解配置AOP

推荐整理分享Java Spring AOP的两种配置方式(spring中aop实现),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:spring中aop,spring aop实例讲解,spring aop两种实现方式,spring中aop实现,spring,aop,spring aop两种实现方式,spring,aop,spring,aop,内容如对您有帮助,希望把文章链接给更多的朋友!

java中注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:

1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around).2. 开发需要被拦截的类。3. 将切面配置到xml中,当然,我们也可以使用自动扫描Bean的方式。这样的话,那就交由Spring AoP容器管理。

另外需要引用 aspectJ 的 jar 包: aspectjweaver.jar aspectjrt.jar

实例:

User.javapackage com.bjsxt.model;public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}/***接口类*/package com.bjsxt.dao;import com.bjsxt.model.User;public interface UserDAO { public void save(User user);}复制代码实现接口:package com.bjsxt.dao.impl;import org.springframework.stereotype.Component;import com.bjsxt.dao.UserDAO;import com.bjsxt.model.User;@Component("u")public class UserDAOImpl implements UserDAO { public void save(User user) { System.out.println("user saved!"); /*throw new RuntimeException("exception");*/ //抛异常 }}复制代码操作类:package com.bjsxt.service;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;import com.bjsxt.dao.UserDAO;import com.bjsxt.model.User;@Component("userService")public class UserService { private UserDAO userDAO; public void init() { System.out.println("init"); } public void add(User user) { userDAO.save(user); } public UserDAO getUserDAO() { return userDAO; } @Resource(name="u") public void setUserDAO( UserDAO userDAO) { this.userDAO = userDAO; } public void destroy() { System.out.println("destroy"); }}复制代码加入aoppackage com.bjsxt.aop;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;@Aspect@Componentpublic class LogInterceptor { @Pointcut("execution(public * com.bjsxt.service..*.add(..))") public void myMethod(){}; /*@Before("execution(public void com.bjsxt.dao.impl.UserDAOImpl.save(com.bjsxt.model.User))")*/ @Before("myMethod()") public void before() { System.out.println("method staet"); } @After("myMethod()") public void after() { System.out.println("method after"); } @AfterReturning("execution(public * com.bjsxt.dao..*.*(..))") public void AfterReturning() { System.out.println("method AfterReturning"); } @AfterThrowing("execution(public * com.bjsxt.dao..*.*(..))") public void AfterThrowing() { System.out.println("method AfterThrowing"); } }复制代码配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns=" xmlns:xsi=" xmlns:context=" xmlns:aop=" xsi:schemaLocation=" "><!-- 要添加最后2行 --> <context:annotation-config /> <context:component-scan base-package="com.bjsxt"/> <!-- 自动扫描 --> <aop:aspectj-autoproxy/> <!-- 要添加本行 --></beans>复制代码测试类:package com.bjsxt.service;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjsxt.model.User;//Dependency Injection//Inverse of Controlpublic class UserServiceTest { @Test public void testAdd() throws Exception { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService)ctx.getBean("userService"); System.out.println(service.getClass()); service.add(new User()); System.out.println("###"); ctx.destroy(); }}复制代码结果:class com.bjsxt.service.UserService$EnhancerByCGLIB$7bmethod staetuser saved!method AfterReturningmethod after###复制代码Java Spring AOP的两种配置方式(spring中aop实现)

注意:

@Aspect:意思是这个类为切面类@Componet:因为作为切面类需要 Spring 管理起来,所以在初始化时就需要将这个类初始化加入 Spring 的管理;@Befoe:切入点的逻辑(Advice)execution…:切入点语法第二种:xml配置aop

实例同上:只是配置文件不同

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=" xmlns:xsi=" xmlns:context=" xmlns:aop=" xsi:schemaLocation=" "><!-- 要添加最后2行 --> <context:annotation-config /> <context:component-scan base-package="com.bjsxt"/> <bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean> <aop:config> <aop:pointcut expression="execution(public * com.bjsxt.service..*.add(..))" id="servicePointcut"/> <aop:aspect id="logAspect" ref="logInterceptor"> <aop:before method="before" pointcut-ref="servicePointcut" /> </aop:aspect> </aop:config></beans>复制代码

下面的<beans>是Spring的配置标签,beans里面几个重要的属性:

xmlns:

是默认的xml文档解析&#;式,即spring的beans。地址是

AndroidのScrollView中嵌套ListView时显示一行解决方法 在ScrollView中嵌套ListView时,ListView只能显示一行多一点.原因在ScrollView中嵌套ListView控件,无法正确的计算ListView的大小,故可以通过代码,根据当前的Lis

Android中的GET和POST请求 packagecom.xuexi.getposttest;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.MalformedURLException;importjava.net.URL;im

Android显示WIFI列表功能实现 最近在做Android连接Wifi打印机的功能,无意间看到这个列表功能,比较简单,就实现了一下,没有DEMO。其实主要的就是使用WifiManager这个对象来进行操作

标签: spring中aop实现

本文链接地址:https://www.jiuchutong.com/biancheng/376675.html 转载请保留说明!

上一篇:Android的GPU过度绘制的优化(手机gpu过度绘制)

下一篇:AndroidのScrollView中嵌套ListView时显示一行解决方法(android:scaletype="centercrop")

  • 企业所得税汇算清缴补缴税款分录
  • 汇算清缴研发费用加计扣除优惠明细表
  • 提成过高
  • 应付账款暂估款的会计分录
  • 购入汽车的增值税可以抵扣差额开具的销项吗
  • 配件的出口是否可以免抵退?
  • 回购股票增加权益吗
  • 交易性金融资产借贷方向
  • 服务业税收包括什么
  • 增值税纳税义务发生时间
  • 流动负债中的短期借款
  • 预提费用 会计准则
  • 开办费用属于什么科目
  • 2016年营改增后18个税种,第一大税种是()
  • 企业多缴纳所得税怎么办
  • iphone手机腾讯视频怎么取消自动续费
  • 电商公司怎么进入
  • 咨询费 税
  • 长期租赁存在的主要原因为什么是节税
  • 收到分红款企业所得税怎么填报
  • 当期出售其他权益怎么算
  • 申报表b表去哪里申报
  • 贸易公司出口是什么意思
  • 公司购买的车辆购置税怎么入账
  • 收到税费返还是什么现金流量
  • php怎么添加样式
  • 企业若需要给客户交税
  • 尿急尿频尿不尽吃什么药效果好
  • php foo
  • 进口应税消费品所支付的金额不包括
  • 合并财务报表抵消原理
  • print函数php
  • php json_encode与json_decode详解及实例
  • php中自定义函数的语法格式
  • 路由vue-router
  • PHP+Apache+Mysql环境搭建教程
  • 税费的审计
  • 银行存款手工明细分类账
  • 小规模销售收入超过500万
  • mongodb数据库中使用哪个数据库可以设置用户名和密码
  • 无偿帮工造成财产损失谁赔偿 法院
  • 建筑企业结转成本依据准则
  • sql中order by 1
  • 未达起征点的增值税会计处理
  • 商业一般纳税人标准
  • 固定资产折旧加计扣除最新政策
  • 应交税金等于销项减进项吗
  • 跨年的个人所得税可以更正吗
  • 房地产企业收到政府补助
  • 政府会计制度累计盈余为负数
  • 应付职工薪酬的会计科目
  • sqlserver2005网络配置里没有东西
  • sqlserver全文索引
  • mysql 5.7.12 winx64手动安装教程
  • win7系统纯净版和旗舰版
  • win10系统怎么设置屏幕
  • Append、Debug、Diskcomp命令的使用说明
  • perl常用函数
  • 如何旋转图片30度
  • excite引擎
  • vue.js作用
  • Eclipse运行快捷键
  • android设置移动网络灰色是什么原因
  • javascript怎么学
  • python相关图片
  • javascriptz
  • js设置图片边框
  • 详解增发万亿国债细节
  • android studio 无法解析 aar
  • Android IntentFilter 匹配原则浅析
  • ndk调用so
  • 如何在网上查看自己的征信
  • 网上报税失败什么原因
  • 税控盘服务费必须每年交吗为什么
  • 公司出租非住宅税种
  • 企业卖旧房如何计算缴纳土地增值税
  • 小规模纳税人租赁收入增值税税率是多少
  • 按月申报印花税如何计税
  • 如果我是科学家我会发明什么
  • 福建是高原还是平原
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设