2011-10-07 21 views
10

में पहलू में इंजेक्शन में ऑटोवॉयर निर्भरता इंजेक्शन नहीं दी गई है, मैं @Autowire पहलू में सर्विस लेयर इंस्टेंस करने में सक्षम नहीं हूं। पहलू में @Autowired बीन का संदर्भ शून्य है और यह NullPointerException फेंकता है। किसी भी प्रकार के मदद की बहुत सराहना की जाएगी। मुझे लगता है, मैं विन्यास के साथ गड़बड़ कर दिया।स्प्रिंग एमवीसी

के बाद मेरी servlet-context.xml है: निम्नलिखित

@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"; 
} 

मैं हो रही है:

@Configurable 
@Component 
@Aspect 
public class AuthenticationAspect { 
private static final Logger logger = LoggerFactory.getLogger(AuthenticationAspect.class); 

@Autowired 
private LoginService loginService; 

    //.... 
} 

यहाँ मेरी नियंत्रक @Authentication एनोटेशन का उपयोग करके उपरोक्त परिभाषित किया गया है:

<!-- 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 /> 
बाद

मेरी पहलू है अपवाद:

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) 

उत्तर

17

this piece of the documentation देखें:

7.8.3 स्प्रिंग आईओसी का उपयोग कर AspectJ पहलुओं का विन्यास

स्प्रिंग अनुप्रयोगों के साथ AspectJ पहलुओं का उपयोग करते समय दोनों चाहते हैं के लिए स्वाभाविक है और इस तरह कॉन्फ़िगर करने के लिए सक्षम होने की अपेक्षा वसंत का उपयोग पहलुओं। AspectJ रनटाइम स्वयं पहलू निर्माण के लिए ज़िम्मेदार है, और वसंत के माध्यम से पहलू पहलुओं को कॉन्फ़िगर करने के साधन पहलू द्वारा उपयोग किए गए AspectJ तत्काल मॉडल ('प्रति-xxx' खंड) पर निर्भर करता है।

AspectJ पहलुओं का बहुमत सिंगलटन पहलू हैं। इन पहलुओं का विन्यास बहुत आसान है: सामान्य रूप से पहलू प्रकार को संदर्भित करने वाली बीन परिभाषा बनाएं, और बीन विशेषता 'फैक्ट्री-विधि = "पहलूओएफ" शामिल करें। यह सुनिश्चित करता है कि वसंत एक उदाहरण बनाने की कोशिश करने के बजाय इसके लिए AspectJ पूछकर पहलू उदाहरण प्राप्त करता है। उदाहरण के लिए:

<bean id="profiler" class="com.xyz.profiler.Profiler" 
     factory-method="aspectOf" /> 
+0

डॉक भारी है लेकिन राजा है। – lwpro2

+0

फैक्ट्री-विधि = "पहलूओएफ" जोड़कर मेरी समस्या हल हो गई, धन्यवाद !! – sjaiswal

+0

हाय, क्या आप जानते हैं कि जावा कॉन्फ़िगरेशन में अनुवाद कैसे करें? – Sofiane

संबंधित मुद्दे