2011-10-07 19 views
10

Aspect'te Hizmet Tabaka Örneğini @Autowire yapamıyorum. Aspect'te, @Autowired fasulyesinin referansı NULL ve NullPointerException'u atar. Herhangi bir yardım çok takdir edilecektir. Sanırım, konfigürasyonla uğraştım. Otomatik Kablolu bağımlılığı, Aspect'te Spring MVC'de enjekte edilmedi

ardından

benim servlet-context.xml: İşte
@Configurable 
@Component 
@Aspect 
public class AuthenticationAspect { 
private static final Logger logger = LoggerFactory.getLogger(AuthenticationAspect.class); 

@Autowired 
private LoginService loginService; 

    //.... 
} 

@Authentication Ek Açıklama kullanarak kontrolör yukarıda tanımlanır::

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

alıyorum aşağıdaki takiben

<!-- 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 /> 

benim Aspect olduğunu istisna:

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) 

cevap

17

this piece of the documentation bakınız: Bahar IoC kullanarak AspectJ'yi yönlerini yapılandırılması

7.8.3

Bahar uygulamalarıyla AspectJ'yi yönlerini kullanırken, istediğiniz her ikisi doğaldır ve bu tür yapılandırmak mümkün olmasını bekliyoruz Bahar kullanarak yönleri. AspectJ çalışma zamanının kendisi, görünüm oluşturma işleminden sorumludur ve AspectJ tarafından oluşturulan yönlerin Spring aracılığıyla yapılandırılması, AspectJ örnekleme modeline ('xxx' başına yan tümce) göre kullanılır.

AspectJ yönlerinin çoğunluğu tekil boyutlardır. Bu yönlerin yapılandırılması çok kolaydır: yalnızca görünüm türünü normal olarak referans alan bir fasulye tanımlaması oluşturun ve fasülye 'factory-method = "aspectOf"' özelliğini ekleyin. Bu, Spring'in bir örnek oluşturmayı denemek yerine AspectJi'yi kendisine sormasını sağlayarak görünüm örneğini elde etmesini sağlar. Örneğin:

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

doc hantal ama kraldır. – lwpro2

+0

fabrika yöntemi = "aspectOf" ekleyerek sorunumu çözdü, teşekkürler! – sjaiswal

+0

Merhaba, java konfigürasyonuna nasıl dönüştürüleceğini biliyor musunuz? – Sofiane

İlgili konular