使用Schema配置切面

除了只用接口和注解定义增强处理,还可以在Spring配置文件中通过aop命名空间将一个普通的JavaBean中的方法声明为增强处理

1.UserBizLogger

 1 //使用Schema 不用注解,不用实现接口
 2 public class UserBizLogger {
 3     private static final Logger log = Logger.getLogger(UserBizLogger.class);
 4     //前置增强
 5     public void before(JoinPoint jp){
 6         log.info("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+
 7                 "方法,方法的参数是:"+Arrays.toString(jp.getArgs()));
 8     }
 9     //后置增强
10     public void afterReturing(JoinPoint jp,Object returnValue){
11         log.info("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+
12                 "方法,方法的返回值是:"+returnValue);
13     }
14 }

2.spring配置文件,引入aop命名空间

 1     <bean id="dao" class="com.dao.impl.IUserDaoImpl"></bean>
 2     <bean id="biz" class="com.biz.impl.IUserBizImpl">
 3         <property name="dao" ref="dao"></property>
 4     </bean>
 5     <!-- 声明增强方法所在的类 -->
 6     <bean id="thelogger" class="com.aop.UserBizLogger"></bean>
 7     <!-- 配置切面 -->
 8     <aop:config>
 9     <!-- 定义切入点 -->
10         <aop:pointcut expression="execution(* com.biz.IUserBiz.* (..))" id="pointcut"/>
11         <!-- 引入包含增强的bean -->
12         <aop:aspect ref="thelogger">
13         <!-- 将before方法定义为前置增强并引入切入点 -->
14             <aop:before method="before" pointcut-ref="pointcut"/>
15         <!-- 将afterReturing方法定义为后置增强并引入切入点 -->
16             <!-- 操作返回值 -->
17             <aop:after-returning method="afterReturing" pointcut-ref="pointcut" returning="returnValue"/>
18         </aop:aspect>
19     </aop:config>

3.从测试类

 1 /**
 2  *
 3  * @author Mr
 4  * aop测试类
 5  */
 6 public class Test {
 7
 8     public static void main(String[] args) {
 9         //解析配置文件
10         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
11
12         IUserBiz biz = (IUserBiz) ac.getBean("biz");
13         User user = new User();
14         user.setUname("小老虎");
15         biz.save(user);
16     }
17
18 }

4.测试效果

时间: 2024-10-13 22:28:00

使用Schema配置切面的相关文章

Spring学习4-面向切面(AOP)之schema配置方式

一.通过Scheme配置实现AOP步骤(Spring AOP环境的环境与上篇博文 Spring接口方式相同)    步骤一.编写业务类: public class AspectBusiness {    //切入点     public String delete(String obj) {         System.out.println("==========调用切入点:" + obj + "说:你敢删除我!===========\n");        

solr schema 配置详解

一.字段配置(schema) schema.xml位于solr/conf/目录下,类似于数据表配置文件, 定义了加入索引的数据的数据类型,主要包括type.fields和其他的一些缺省设置. 1.先来看下type节点,这里面定义FieldType子节点,包括name,class,positionIncrementGap等一些参数. name:就是这个FieldType的名称. class:指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为. [

Spring事务——使用XML Schema配置事务策略

Spring同时支持编程式事务策略和声明式事务策略,通常推荐采用声明式事务策略.具体实现过程如下: 1.定义一个接口NewsDao,代码如下: package com.hyq.chapter08_06_2.dao; public interface NewsDao { public void insert(String title,String content); } 2.定义接口的实现类NewsDaoImpl,代码如下: 1 package com.hyq.chapter08_06_2.dao

spring aop 配置切面,记录系统异常存入log日志

1.spring.xml(这里主要配置了抛出异常后的操作after-throwing) 需要注意的地方以黄色标注,主要是几个切入点bean配置 <!-- 激活自动代理功能 --> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 系统服务组件的切面Bean --> <bean id="aspectService" class="com.test.http

spring学习笔记(23)基于tx/aop配置切面增强事务

在上一篇文章中,我们使用了声明式事务来配置事务,使事务配置从service逻辑处理中解耦出来.但它还存在一些缺点: 1. 我们只针对方法名的特定进行拦截,但无法利用方法签名的其它信息定位,如修饰符.返回值.方法入参.异常类型等.如果我们需要为同名不同参的同载方法配置不同事务就会出问题了. 2. 事务属性的配置串虽然能包含较多信息,但配置较易出错. 针对这些问题,我们可以基于Schema,引入tx和aop的命名空间来改进我们的配置: 引入命名空间 <beans xmlns="http://w

mycat使用--schema配置

<?xml version="1.0"?> <!DOCTYPE schema SYSTEM "schema.dtd"> -<mycat:schema xmlns:mycat="http://org.opencloudb/"> -<schema sqlMaxLimit="100" checkSQLschema="false" name="TESTDB&quo

sorl的schema配置

solr的域要先定义后使用, 哪些数据需要导入? 分词器 1 分词器jar包复制 , cp IK\ Analyzer\ 2012FF_hf1/IKAnalyzer2012FF_u1.jar 中文分词器配置文件和字典   cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic  到WEB_INF/classes下: 2 要使用当前的分词器,使它生效 solrhome/collection1/conf/schema.xml ; <fieldType nam

小曹学spring--基于@AspectJ和Schema的AOP

前言: 上一章中已经介绍,Spring中定义一个切面是比较麻烦的,需要实现专门的接口,并进行一些较为复杂的配置.经过改进,如今Spring AOP已经焕然一新,用户可以使用@AspectJ注解非常容易的定义一个切面,而不需要实现任何接口. 对于jdk5.0以下的项目,则可以通过基于Schema的配置定义切面 1.Spring对AOP的支持 spring2.0以后对AOP功能进行了重要的增强,主要变现在以下几个方面: 新增了基于Schema的配置支持,为AOP提供了专门的aop命名空间: 新增了对

定义一个包含增强方法的javaBean(最终增强)

使用Schema 1.AroundLogger类 1 //定义一个包含增强方法的javaBean 2 public class AroundLogger{ 3 //注解方式的环绕增强处理 4 private static final Logger log = Logger.getLogger(AroundLogger.class); 5 public Object aroundLogger(ProceedingJoinPoint jp){ 6 log.info("a调用"+jp.get