3

spring-application-context.xml から Bean 定義を読み取りたい場合は、web.xml ファイルでこれを行います。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
    </param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Java 構成クラス (AnnotationConfigWebApplicationContext) を介して Bean 定義を読み取りたい場合は、web.xml でこれを行います。

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            org.package.MyConfigAnnotatedClass
        </param-value>
    </init-param>
</servlet>

アプリケーションで両方を使用するにはどうすればよいですか。構成 xml ファイルと注釈付きクラスの両方から Bean を読み取るようなものです。

AppConfigAnnotatedClass を使用して残りの Bean をインスタンス化/使用しているときに、Spring Bean を xml ファイルにロードする方法はありますか。

これはうまくいきませんでした

XML ファイルは、Bean を次のように定義します。

<bean name="mybean" class="org.somepackage.MyBean"/>

Java クラスはリソースを次のようにインポートします

@ImportResource(value = {"classpath:some-other-context.xml"})
@Configuration
public class MyConfigAnnotatedClass { 
    @Inject
    MyBean mybean;
} 

ただし、mybean の値は常に null であり、mybean でメソッドを呼び出すときに nullpointerexception が発生します。

4

1 に答える 1

4

@Configurationクラスに注釈を付けることができます

@ImportResource(value = {"classpath:some-other-context.xml"})
@Configuration
public class MyConfigAnnotatedClass { 
    ...
}

<beans>タイプxmlコンテキストをインポートするようにします。

反対の方法でも同じことができます。あなたの@Configurationクラスも@Component. パッケージを含むがある場合<component-scan>、その宣言されたすべての Bean がコンテキストに追加されます。または、次のことができます

<bean name="myAdditionalConfig" class="org.somepackage.MyConfigAnnotatedClass" />

packageパッケージ構造では名前として使用できないことに注意してください。

于 2013-10-22T17:12:57.303 に答える