0

次の方法で、クラスを WebSocketServlet に自動配線しようとしています。

@Configurable(autowire=Autowire.BY_TYPE)
public class MyServlet extends WebSocketServlet {
    @Autowired
    public MyClass field;

    // etc...
}

私の構成は次のようになります。

<context:annotation-config />
<context:component-scan base-package="org.*" />

<bean id="config" class="org.*.MyClass">
   <!-- a bunch of properties -->
</bean>

私が Spring にいる限り、 autowire は正常に機能していたことに注意してください@Controller@Controller通常のサーブレットで行うように、WebSocketsServlet を のメソッドにマップする方法がわからないため、それから抜け出さなければなりませんでした。

私が見逃している可能性のあるものはありますか?

4

3 に答える 3

2

@Configurableを使用するには、ツアーコンテキストで次の行を使用する必要があります。

<context:load-time-weaver aspectj-weaving="true"/>
<context:spring-configured/>    
<context:annotation-config />
<context:component-scan base-package="org.*" />

さらに、マニフェストのImport-Libraryセクションでspring-aspectを参照する必要があると思います。

私はそれを機能させることに成功しませんでした、EclipseのVirgoフォーラムにこれに関する投稿があります。成功した場合は、その方法を教えてください;)

于 2012-10-11T12:08:34.210 に答える
1

@Configurable を取り除き、サーブレットの init メソッドで次のことを行うとうまくいきます。

@Override
public void init() throws ServletException {
   super.init();
   SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
于 2012-10-05T15:15:58.090 に答える
-4

のドキュメントによると

外部化された値は、またはアノテーション@Configurationを使用して Spring Environment をクラスに注入することで検索できます。@Autowired@Inject

 @Configuration
 public class AppConfig {
     @Inject Environment env;

     @Bean
     public MyBean myBean() {
         MyBean myBean = new MyBean();
         myBean.setName(env.getProperty("bean.name"));
         return myBean;
     }
 }
于 2012-10-05T10:17:25.393 に答える