<!-- 這個案例 須要解決的問題: 一個代理工廠 配置 多個目標對象!--> <!--01.配置目標對象--> <bean id="userDao" class="com.xdf.dao.UserDaoImpl"/> <!--爲了 測試 會給 全部的bean注入加強--> <bean id="userDao2" class="com.xdf.dao.UserDaoImpl"/> <!--02.配置相應的加強類--> <bean id="before" class="com.xdf.dao.BeforeAdvice"/> <!--03.設置顧問 讓目標對象和通知產生關係--> <bean id="myAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"> <!--配置通知--> <property name="advice" ref="before"/> <!--配置切入點--> <property name="mappedName" value="sleep"/> </bean> <!--04.配置自動的代理生成器 底層其實就是執行了bean的後處理器 弊端: 就是會給容器中全部的bean 都注入加強! 不能取消!--> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
@Test public void defaultTest(){ ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml"); UserDao dao= context.getBean("userDao", UserDao.class); //UserDao dao= context.getBean("userDao2", UserDao.class); 也會被注入加強方法 dao.eat(); dao.sleep(); }
咱們確定不須要容器管理的全部bean都被加強! 這時候就須要使用另一個BeanNameAutoProxyCeator!spring