除了只用接口和註解定義加強處理,還能夠在Spring配置文件中經過aop命名空間將一個普通的JavaBean中的方法聲明爲加強處理spring
1.UserBizLoggerexpress
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命名空間app
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.測試效果spa