2017-11-22 14 views
1

静的に動的に動的にSpringを呼び出すことはできません。Javaリフレクションを使用してSpring Beanを呼び出す

私は動的にBeanを呼び出すために以下に従いましたが、以下のエラーが発生しています。

org.springframework.beans.factory.NoSuchBeanDefinitionException:

ソースコードという名前の豆:

1。メインサービスクラス

@Component 
public class ContentService 
{ 
    @Autowired 
    private ApplicationContext _appContext; 

    public void process() 
    { 
     try { 
       Object bean = _appContext.getBean("com.content.partner.Movie"); 
       Method method = bean.getClass().getMethod("parseContents"); 
       method.invoke(bean); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 
} 

2。映画サービスクラス

@Component 
public class Movie 
{ 
       private static final Logger _log = LoggerFactory.getLogger(Movie.class); 

    @Autowired 
    private Environment _env; 

    public void parseContents() 
    { 
      _log.info("enter into parsecontents"); 
    } 
} 

エラー:私が理解、あなただけに

Object bean = _appContext.getBean("com.content.partner.Movie");

を変更する必要があるから

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.content.partner.Movie' is defined 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:568) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1108) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:278) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117) 
at com.apalya.myplex.partner.ContentPartnerGenericImpl.process(ContentPartnerGenericImpl.java:112) 
at com.apalya.myplex.partner.ContentPartnerGenericImpl.partneGeneric(ContentPartnerGenericImpl.java:96) 
at com.apalya.myplex.partner.ContentPartner.ingestContent(ContentPartner.java:187) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
+0

オブジェクトBeanを使用すると、_appContext.getBean( "movie"); Movieクラスの@Component( "movie") –

答えて

0

Object bean = _appContext.getBean("movie");

これらすべての「コンポーネント」を既にスキャンしている場合に限ります。

関連する問題