Términos relacionados:
generar el resorte inferior proxy tiene dos modos: JDK proxy dinámico (objetos deben implementar la interfaz) y genera una CGLIB proxy (objeto se puede lograr interfaz independiente)
La introducción de dos dependientes 1.maven:
< Dependencia > < groupId > org.springframework </ groupId > < artifactId > primavera-AOP </ artifactId > < versión > 5.2.4.RELEASE </ versión > </ dependencia > < dependencia > < groupId > aopalliance </ groupId > < artifactId > aopalliance </ artifactId > < versión >1.0 </versión > </ dependencia >
2. Configurar el archivo de configuración applicationContext.xml primavera:
<? xml version = "1.0" encoding = "UTF-8" >? < habas xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001 / XMLSchema instancia" xsi: schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" > <! - 配置目标类-> < frijol ID = "studentDao" clase = "com.imooc.aop.demo6.StudentDaoImpl" /> < frijol ID = "CustomerDAO" clase = "com.imooc.aop.demo6. -> < frijol ID = "myBeforeAdvice" clase = "com.imooc.aop.demo6.MyBeforeAdvice" /> < frijol ID = "myAroundAdvice" clase = "com.imooc.aop.demo6.MyAroundAdvice" /> <! - - 配置切面-> < frijol ID = "myAdvisor" clase = "org.springframework.aop.support.RegexpMethodPointcutAdvisor" > < propiedad nombre = "patrón" valor = "com \ .imooc \ .aop \ .demo6 \ .CustomerDao \ .save" /> <! - 配置匹配的对象中的方法,.Necesidad de uso de etiquetas carácter de escape -> < propiedad nombre= "El consejo" REF = "myAroundAdvice" /> <! - configurar ambos métodos -> </ el grano > <! - dejar que el público crea automáticamente cuando la entidad correspondiente del objeto proxy y reemplazar -> < el grano de clase = "de la clase org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" > </ bean > </ Beans >
3. Ejemplos de utilización:
empaquetar com.imooc.aop.demo6; importación org.junit.Test; importación org.junit.runner.RunWith; importación org.springframework.test.context.ContextConfiguration; importación org.springframework.test.context.junit4.SpringJUnit4ClassRunner; importación javax.annotation.Resource; @RunWith (SpringJUnit4ClassRunner. Clase ) @ContextConfiguration ( "ruta de clases: applicationContext4.xml" ) pública clase SpringDemo6 { @Resource (nombre = "studentDao" ) privada StudentDao studentDao; @Resource (nombre = "CustomerDAO" ) privada CustomerDAO CustomerDAO; @Test pública vacío demo1 () { studentDao.find (); studentDao.save (); studentDao.update (); studentDao.delete (); customerDao.find (); customerDao.save (); customerDao.update (); customerDao.delete (); } }