Page 2 of 2 FirstFirst 12
Results 11 to 12 of 12

Thread: Autowiring in Aspects

  1. #11
    Join Date
    Sep 2011
    Posts
    1

    Default

    This worked for me, thank you for posting your solution! I was stuck on the same problem for hours. In particular, I think it was the <context:spring-configured/> that made the difference. Without this, I noticed that the Aspect class does not get instantiated until the pointcut occurs, and therefore Spring was not able to inject the Autowired dependencies. But with the spring-configured tag in place, it gets instantiated in the beginning and the dependencies get injected properly.

  2. #12
    Join Date
    Oct 2011
    Posts
    1

    Default Same Configurations not working for me

    I am not able to @Autowire the Service Layer Instance in Aspect. In Aspect the reference to the Autowired bean is NULL and it throws NullPointerException. Any help will be much appreciated. I think, I messed up with configuration.

    Following is my servlet-context.xml:

    Code:
     
    	<!-- 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" class="xx.yy.aop.aspects.LoggingAspect" />
    	<beans:bean id="authenticationAspect" class="xx.yy.aop.aspects.AuthenticationAspect" />
    	
    	<!-- Enables the Spring MVC @Controller programming model -->
    	<annotation-driven />
    Following is my Aspect:

    Code:
    @Configurable
    @Component
    @Aspect
    public class AuthenticationAspect {
    	private static final Logger logger = LoggerFactory.getLogger(AuthenticationAspect.class);
    	
    	@Autowired
    	private LoginService loginService;
    	
            //.... 
    }
    Here is my controller using the @Authentication Annotation defined above:

    Code:
    @Controller
    @RequestMapping("/user")
    public class UsersController {
    	
    	@Autowired
    	private 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";
    	}
    I am getting following exception:

    Code:
    Oct 8, 2011 3:12:48 AM org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet appServlet threw exception
    java.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)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •