类DataSourceAdvice.java
public class DataSourceAdvice implements MethodBeforeAdvice {
// service方法执行之前被调用
@Override
public void before(Method method, Object[] args, Object target) throws Throwable {
System.out.println("切入点: " + target.getClass().getName() + "类中" + method.getName() + "方法");
if(method.getName().startsWith("add")
|| method.getName().startsWith("create")
|| method.getName().startsWith("save")
|| method.getName().startsWith("edit")
|| method.getName().startsWith("update")
|| method.getName().startsWith("delete")
|| method.getName().startsWith("remove")){
System.out.println("切换到: master");
DataSourceSwitcher.setMaster();
}
else {
System.out.println("切换到: slave");
DataSourceSwitcher.setSlave();
}
}
}
实现MethodBeforeAdvice,重载before方法.在spring.xml
<bean id="dataSourceAdvice" class="com.sly.spring.DataSourceAdvice" />
<aop:config>
<aop:pointcut id="transacationPointcut" expression="execution(* com.sly.service.*.*(..))" />
<aop:advisor advice-ref="dataSourceAdvice" pointcut-ref="transacationPointcut" />
</aop:config>
但是为什么我请求Service时,切面的内容没有打印呢?