1.问题描述
我想在一个Spring MVC Controller运行前插入一个切面,在控制台显示Hello index
(index
是注入切面的方法名称)。但是访问页面调用控制器的时候失败了。在切面配置类加入断点,接着DEBUG,显示访问页面的时候,切面配置类甚至都没有运行,三段代码如下,您能帮我看一看问题所在吗?
2.代码如下:
(1)入口类:
@SpringBootApplication
@EnableAspectJAutoProxy
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
System.out.println("start!");
}
}
(2)切面配置类
@Aspect
@Component
public class HelloAspect {
@Before(value = "execution(String cn.shaytang.HelloController.index())")
public void before(JoinPoint joinPoint){
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
Method method = methodSignature.getMethod();
System.out.println("Hello" + method.getName());
}
}
(3)加入切面的控制器
@Controller
public class HelloController {
@RequestMapping(value = "")
String index(){
return "index";
}
}
3.控制台结果
start!
2016-04-26 00:08:07.500 INFO 4302 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-04-26 00:08:07.500 INFO 4302 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2016-04-26 00:08:07.516 INFO 4302 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms
謝謝邀請:
我看了你的程式碼請在Demo3Application 上面加上一個 @ComponentScan(basePackages = "cn.shaytang") 註解,我已經測試了你的切面沒有問題。
HelloController 中的index方法的修飾符改為public即可。如下: