本文共 6549 字,大约阅读时间需要 21 分钟。
本文转自 素颜猪 51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1910311
1.创建Maven项目,项目名称springdemo50,如图所示
1.0.0 shequ springdemo13 0.0.1-SNAPSHOT 1.7 UTF-8 UTF-8 codelds https://code.lds.org/nexus/content/groups/main-repo javax.annotation jsr250-api 1.0 org.springframework spring-test 4.1.4.RELEASE junit junit 4.10 org.springframework spring-core 4.1.4.RELEASE org.springframework spring-context 4.1.4.RELEASE org.springframework spring-jdbc 4.1.4.RELEASE mysql mysql-connector-java 5.1.34
package com.mycompany.shequ.bean;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component("customerBean")public class Customer { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } @Value("#{('dengyunshuo@163.com' matches '^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)" + "*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$') ? 'dengyunshuo@163.com':'不合法'}") public void setEmail(String email) { this.email = email; }}
package com.mycompany.shequ.dao;public interface ICustomerDao { public void showMe();}
package com.mycompany.shequ.dao.impl;import com.mycompany.shequ.dao.ICustomerDao;public class CustomerDaoImpl implements ICustomerDao { public void showMe() { System.out.println("I'm CustomerDaoImpl"); }}
package com.mycompany.shequ.service;public interface ICustomerService { public void showMe();}
package com.mycompany.shequ.service.impl;import com.mycompany.shequ.dao.ICustomerDao;import com.mycompany.shequ.service.ICustomerService;public class CustomerServiceImpl implements ICustomerService { private ICustomerDao customerDao; public ICustomerDao getCustomerDao() { return customerDao; } public void setCustomerDao(ICustomerDao customerDao) { this.customerDao = customerDao; } public void showMe() { customerDao.showMe(); }}
package com.mycompany.shequ.service.impl;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;/** * 方法执行前通知 * @author Administrator * */public class MethodBefore implements MethodBeforeAdvice { public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable { System.out.println("前置通知被执行"); }}
package com.mycompany.shequ.service.impl;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;/** * 方法执行完成后通知 * @author Administrator * */public class MethodAfter implements AfterReturningAdvice { public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable { System.out.println("后置通知被执行"); }}
package com.mycompany.shequ.service.impl;import org.springframework.aop.ThrowsAdvice;/** * 抛出异常后通知 * @author Administrator * */public class ThrowException implements ThrowsAdvice { public void afterThrowing(IllegalArgumentException e) throws Throwable{ System.out.println("异常通知被执行"); }}
package com.mycompany.shequ.service.impl;import java.util.Arrays;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;/** * 环绕通知 * @author Administrator * */public class AroundMethod implements MethodInterceptor { public Object invoke(MethodInvocation method) throws Throwable { System.out.println("环绕通知被执行"); System.out.println("方法名称:"+method.getMethod().getName()); System.out.println("方法参数:"+Arrays.toString(method.getArguments())); Object result = method.proceed(); return result; }}
methodBeforeBean methodAfterBean throwExceptionBean aroundMethodBean
package com.mycompany.shequ.test;import org.junit.Test;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mycompany.shequ.service.ICustomerService;public class AppTest { @Test public void beanTest(){ ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); ICustomerService customerService = (ICustomerService) context.getBean("customerServiceProxy"); customerService.showMe(); }}
转载地址:http://khsfx.baihongyu.com/