봄을 사용하여 jar 라이브러리를 만들고 웹 응용 프로그램에서 가져 오려고합니다. 후자에서 봄을 사용하기 때문에 아무런 문제가 없습니다. 요점은 비 스프링 관리 환경에서도 재사용하고 싶다는 것입니다. 순수한 javaee 웹 응용 프로그램에서 lib를 사용하려는 경우 스프링 자동 배선 및 패키지 스캔 기능을 사용할 수 없습니다. 내 생각은 다음의 costructor에 간단한 순수 콩 및로드 스프링 구성을 만들 : 스프링 관리 웹 응용 프로그램에서 사용자 정의 스프링 jar를 작성 /로드하는 방법
public class SpringStandalone{
private Client client;
private AnnotationConfigApplicationContext ctx;
public SpringStandalone() {
ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("test");
ctx.scan("my.package.scan");
ctx.refresh();
client = (Client) ctx.getBean(Client.class);
ctx.destroy();
}
public void send(Object o) {
client.send(o);
}
}
이 올바른 방법으로이 작업을 수행하기 위해인가요? 그렇다면 어떻게해야 applicationContext destroy를 관리해야합니까? (걱정해야합니까?)
미리 도움을 주셔서 감사합니다.
파비오
글쎄, 그 사이에 단 한 개의 인스턴스 만 가져 오기 위해 springStandalone 클래스를 싱글 톤으로 변경했습니다 (제안한대로). 클라이언트가 호스팅 웹 응용 프로그램이 살아있는 한 오래 살아야하기 때문에 파괴 작업이 응용 프로그램이 종료 된 것과 일치합니다. 내가 맞습니까? 어쨌든 대답에 감사드립니다. – Pirulino
예, 클라이언트 빈이 앱이 살아있는 동안 살아야한다면, 파기 작업은 앱 종료와 일치해야합니다. 싱글 톤에 관해서는 제 생각에는 가능한 솔루션 중 하나 일뿐입니다. 명백한 단점은 이것이 모든 결함을 가진 글로벌 변수라는 것입니다. 또 다른 참고 사항 : 앱 시작시 Spring 구성 문제를 감지하려고하지만 싱글 톤 패턴은 SpringStandalone 생성을 처음 사용할 때까지 연기 할 수 있으므로 앱 시작시 트리거를 생성하도록 명시 적으로 호출하도록 제안합니다. – Alexander
나는 당신에 동의합니다. 도와 주셔서 감사합니다. – Pirulino