2012-04-19 4 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와 같이 콩에 대한 참조를 얻기 위해 beanfactory/application 컨텍스트를 사용해서는 안되며, 종속 콩이 컨트롤러에 주입 될 것으로 예상해야합니다. 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> 

dispatcher-servlet.xml을 web-inf 디렉토리에 복사하십시오. bean 정의를 거기에 넣으면 서블릿이 시작될 때 정의되고 사용 가능하게됩니다.

편집 : 컨트롤러에

<beans> 

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

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

</beans> 

autowiring은 콩 예 :

는 봄 참조 섹션 3.2.2.1에서 다른에 하나의 빈 접속과 운전 파일 가져 오기

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

당신은 내가 콩을 config.xml에서 Dispatacher.xml로 옮겨야한다고 말했습니까? 그렇다면 제어 도구에서 팩토리에 액세스하는 방법 – SJS

+0

정의를 이동하는 대신 config.xml을 dispatcher-servlet.xml에 넣을 수 있습니다. 네가 원한다면. 컨트롤러에 컨트롤러 주석이 주석으로 달린 경우 컨트롤러 내부의 autowire 주석을 사용하여 빈을 주입 할 수 있습니다. – GriffeyDog

+0

두 가지 예가 있습니까? – SJS