2012-04-19 8 views
1

私はSpring3 Web AppのbeanFactoryにアクセスするためのより良い方法を探しています。今、私のセットアップ私のシステムが使用しようとしているすべての私のサービスとし、コントローラ内のconfig.xmlファイルには、私は、広告のようなコードの行:各コントローラでSpring3 Web AppのbeanFactoryへのより良いアクセス

private static XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("config.xml")); 

は...誰もが任意のより良いを知っていますこれを行う方法?あなたは春のMVCを使用している場合

+0

何技術コントローラのために使用しますか? – chalimartines

+1

@Stuttering Johnは、GriffeyDogのように、Beanへの参照を取得するためにbeanfactory/applicationコンテキストを使用すべきではないと考えているので、依存するBeanをコントローラに注入する必要があります。 beanfactoryへのアクセスが絶対に必要な場合は、org.springframework.context.ApplicationContextAwareインターフェースを実装できます。 –

答えて

4

は、おそらくあなたは次のように、リクエストを処理するために、web.xmlにサーブレットを定義した:あなたはのようなものをという名前の春の設定ファイルを持っている必要があり、その場合には

<servlet> 
    <description></description> 
    <display-name>dispatcher</display-name> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

web-infディレクトリにあるdispatcher-servlet.xmlを参照してください。そこにBean定義を置くと、定義され、サーブレットの起動時に利用可能になります。

EDIT:

春参照のセクション3.2.2.1から、他に1つの豆的な設定ファイルをインポートする:

<beans> 

    <import resource="services.xml"/> 
    <import resource="resources/messageSource.xml"/> 
    <import resource="/resources/themeSource.xml"/> 

    <bean id="bean1" class="..."/> 
    <bean id="bean2" class="..."/> 

</beans> 

コントローラでBeanの例をオートワイヤリング:

@Controller 
public class MyController { 
    @Autowired 
    private MyBeanClass myBeanName; 
    ... 
} 
+0

私はすべてのBeanをconfig.xmlからDispatacher.xmlに移動する必要があると言っています。そして、コントローラーからファクトリにアクセスする方法 – SJS

+0

config.xmlをdispatcher-servlet.xmlに移動する代わりに、お望みならば。コントローラにコントローラ注釈が注釈されている場合は、コントローラ内のオートワイヤ注釈を使用してBeanを挿入できます。 – GriffeyDog

+0

両方の例がありますか? – SJS

関連する問題