우리는 엔터프라이즈 응용 프로그램의 구성 서비스로 spring을 사용할 계획입니다.spring context.refresh() 및 동시 액세스
이 부분은 봄 참고 안내서 및 기타 블로그에서 잘 설명되어 있습니다. 기본적으로 속성 파일과 context : property-placeholder를 사용하여 응용 프로그램에서 차례로 사용되는 bean에 & 값을 채울 계획입니다.
경우에 따라 등록 정보 파일이 변경되고 해당 이벤트에서 변경된 값을 반영하도록 bean을 원할 수 있습니다. 나는 ApplicationContext.refresh()가 빈과 그 설정 값을 새로 고치는 방법이라는 것을 이해한다. ApplicationContext.refresh()는 매력처럼 작동했습니다. 컨텍스트가 갱신 될 때
<context:property-override location="file:///d:/work/nano-coder/quickhacks/src/main/resources/myproperties.properties"/>
<bean id="myconfig" class="org.nanocoder.quickhacks.config.MyPropertyBean">
<property name="cacheSize" value="${registry.ehcache.size}"/>
<property name="httpHostName" value="${url.httpHostName}"/>
<property name="httpsHostName" value="${url.httpsHostName}"/>
<property name="imageServers">
<list>
<value>${url.imageserver1}</value>
<value>${url.imageserver2}</value>
<value>${url.imageserver3}</value>
</list>
</property>
</bean>
그러나, I는 ApplicationContext.getBean 해당 동시 통화() 또는 콩 어떠한 게터 동작 잠재적 인해 IllegalStateException이 또는 BeanCreationException 실패 알았다.
value = context.getBean("myconfig", MyPropertyBean.class).getHttpHostName();
질문
- ()는 다른 동시 통화에 영향을주지 않는 것이 가능 통화 context.refresh하는 것입니다
- context.refresh()가 동시 접근을 방해 할 수있는 경우 이러한 상황을 피하기위한 전략이 필요합니다.
귀하의 지침에 크게 감사하겠습니다.