GVKun编程网logo

Spring MVC中没有在Aspect中注入自动关联(springmvc找不到controller)

22

如果您对SpringMVC中没有在Aspect中注入自动关联和springmvc找不到controller感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SpringMVC中没有在Aspect中

如果您对Spring MVC中没有在Aspect中注入自动关联springmvc找不到controller感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Spring MVC中没有在Aspect中注入自动关联的各种细节,并对springmvc找不到controller进行深入的分析,此外还有关于@Aspects(AOP)对spring MVC中controller不起作用的原因及解决方案、asp.net-mvc – Java Spring MVC中的ASP.NET MVC部分视图、asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?、asp.net-mvc – RedirectToAction导致在ASP.NET MVC 3中“路由表中没有路由匹配提供的值”的实用技巧。

本文目录一览:

Spring MVC中没有在Aspect中注入自动关联(springmvc找不到controller)

Spring MVC中没有在Aspect中注入自动关联(springmvc找不到controller)

我无法@Autowire使用Aspect中的服务层实例。在Aspect中,对@Autowiredbean
的引用为NULL并引发NullPointerException。任何帮助都感激不尽。我想,我搞砸了配置。

以下是我的servlet-context.xml

<!-- Activates various annotations to be detected in bean classes --><context:annotation-config /><context:spring-configured /><!-- Scans the classpath of this application for @Components to deploy as beans --><context:component-scan base-package="xx.yy" /><!--  an @AspectJ aspect will be interpreted as an aspect by Spring AOP and beans in the context will be advised accordingly --><aop:aspectj-autoproxy /><beans:bean id="loggingAspect"/><beans:bean id="authenticationAspect"/><!-- Enables the Spring MVC @Controller programming model --><annotation-driven />

以下是我的观点:

@Configurable@Component@Aspectpublic class AuthenticationAspect {private static final Logger logger = LoggerFactory.getLogger(AuthenticationAspect.class);@Autowiredprivate LoginService loginService;    //.... }

这是我的控制器,使用@Authentication上面定义的注释:

@Controller@RequestMapping("/user")public class UsersController {@Autowiredprivate UserService userService;@Authenticate@RequestMapping(value="/{userId}/profile", method=RequestMethod.GET)    public String displayUser(WebRequest webRequest, @PathVariable("userId") String userId, Model model) {    User user = userService.findUser(Long.valueOf(userId));      model.addAttribute("user", user);    model.addAttribute("AccordionMenuTab","5");    model.addAttribute("selectedLink","profile");    return "profile";}

我收到以下异常:

Oct 8, 2011 3:12:48 AM org.apache.catalina.core.StandardWrapperValve invokeSEVERE: Servlet.service() for servlet appServlet threw exceptionjava.lang.NullPointerException    at xx.yy.controller.UsersController.displayUser_aroundBody1$advice(UsersController.java:28)    at xx.yy.controller.UsersController.displayUser(UsersController.java:1)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)    at java.lang.Thread.run(Thread.java:662)

答案1

小编典典

请参阅此文档:

7.8.3使用Spring IoC配置AspectJ方面

当将AspectJ方面与Spring应用程序一起使用时,既自然又希望能够使用Spring配置此类方面。AspectJ运行时本身负责方面的创建,通过Spring配置AspectJ创建的方面的方法取决于方面所使用的AspectJ实例化模型(“
per-xxx”子句)。

AspectJ的大多数方面都是单例方面。这些方面的配置非常简单:只需创建一个照常引用方面类型的bean定义,并包含bean属性’factory-
method =“ aspectOf”’。这样可以确保Spring通过向AspectJ索要长宽比实例,而不是尝试自己创建实例来获得长宽比实例。例如:

<bean id="profiler"factory-method="aspectOf" />

@Aspects(AOP)对spring MVC中controller不起作用的原因及解决方案

@Aspects(AOP)对spring MVC中controller不起作用的原因及解决方案

@Aspects(AOP)对spring MVC中controller不起作用的原因及解决方案


原因

Spring MVC加载的是WebApplicationContext而不是ApplicationContext,也就是说spring和springMvc使用的是不同的容器,如果只在spring的配置文件中配置了<aop:aspectj-autoproxy/>,那么AOP是不能正常在controller中起到作用的,因此需要把该配置同样配置到springMvc的配置文件中。

解决方案

1.在web.xml中找到当前使用的spring MVC的配置文件位置
mark

2.找到springMvc的配置文件,添加配置Aspectj的自动代理(许多造成该错误的原因都是因为只在spring的配置文件中配置了aspectj的支持)
mark

asp.net-mvc – Java Spring MVC中的ASP.NET MVC部分视图

asp.net-mvc – Java Spring MVC中的ASP.NET MVC部分视图

我想知道 Java Spring MVC是否有某种与返回部分视图(如ASP.NET MVC)相关的实现?基本上我想返回HTML,绑定到一个对象并将其返回到javascript回调以附加到dom,而不是使用 Jquery构建html(这是单调乏味的).如果不是,我可以使用Jquery模板.

解决方法

我做了类似你问的事情.基本上我创建了一个视图,但我没有将它与默认布局相关联.这样,当您加载视图时,它只包含视图的HTML,而不是默认布局中的所有额外内容.

对不起,我没有代码可以分享.

asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?

asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?

这可能是愚蠢的问题,但我正在查看Ninject来源,并且看不到NInject注册自己的控制器工厂.在Ninject.Web.Mvc程序集中我也看不到任何IControllerFactory类.我错过了什么吗? Ninject如何创建控制器并将参数注入到构造函数中?

解决方法

让我们说我们正在寻找“/ Task / Index”. > Ninject MVC应用程序现在使用DefaultControllerFactory,与非Ninject应用程序相同. > DefaultControllerFactory查找控制器(TaskController)的类型. > DefaultControllerFactory具有称为DefaultControllerActivator的内部类. DefaultControllerActivator具有名为Create的方法,它返回控制器实例. DefaultControllerFactory为TaskController类型实例询问DefaultControllerActivator. > DefaultControllerActivator.Create使用IDependencyResolver.这是Ninject进来的地方.由于Ninject实现了自己的解析器,并在应用开始时设置它,所以他获得了TaskController实例的请求. >其余的很容易Ninject发现这种类型的构造函数,注入参数,返回控制器实例.

asp.net-mvc – RedirectToAction导致在ASP.NET MVC 3中“路由表中没有路由匹配提供的值”

asp.net-mvc – RedirectToAction导致在ASP.NET MVC 3中“路由表中没有路由匹配提供的值”

我有一个项目,我最近升级到ASP.NET MVC 3.在我的本地机器,一切都正常.当我部署到服务器时,我会在使用RedirectToAction调用时发生错误.它会抛出一个system.invalidOperationException错误消息路由表中的路由与提供的值匹配.我的假设是在服务器上有一些配置问题,但我似乎无法弄清楚.

解决方法

我与RedirectToAction一次出现了类似的问题,发现您需要注册的有效路由才能导致该操作.

关于Spring MVC中没有在Aspect中注入自动关联springmvc找不到controller的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于@Aspects(AOP)对spring MVC中controller不起作用的原因及解决方案、asp.net-mvc – Java Spring MVC中的ASP.NET MVC部分视图、asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?、asp.net-mvc – RedirectToAction导致在ASP.NET MVC 3中“路由表中没有路由匹配提供的值”的相关知识,请在本站寻找。

本文标签: