我想在一个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.控制台结果
tart!
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
HelloController 中的index方法的修饰符改为public即可。如下:
@Controller
public class HelloController {
@RequestMapping(value = "")
public String index(){
return "index";
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。