2017-10-28 5 views
0

스프링 애플리케이션 설계 질문. 필자는 유틸리티 Java 라이브러리를 작성하려고합니다. 이것은 다른 모든 작은 응용 프로그램에 종속 될 것입니다. 내 모든 응용 프로그램은 스프링 기반 응용 프로그램입니다. 유틸리티 라이브러리 모듈에서 자동 배선을 사용하는 것이 좋습니다. 그리고이 유틸리티 라이브러리는 속성 파일에서 읽을 속성이 거의 필요 없습니다. 이 모듈을 사용하는 다른 응용 프로그램이 스프링 기반 일 때 공용 유틸리티 라이브러리 작성에 어떻게 접근 할 것입니까?스프링 설계 유틸리티 모듈

+0

라이브러리를 가능한 한 ** 거의 사용하지 않는 것이 가장 좋습니다 ** - 이상적으로는 아무 것도 없습니다. 의존성을 도입 할 경우, 그것이 필요하고 도서관 소비자에게 어떤 부담을 줄 것인지에 대해 오랫동안 열심히 생각하십시오. 개인적으로, 나는 스프링을 내장 한 라이브러리를 가지고있다 - 나는 훌륭한 문서를 선호하며 Spring에서 직접 구성한다. 엄청난 양의 생각을 한 후에, 라이브러리에서 Spring을 사용하면 더 많은 문제를 해결할 수 있습니다. 그러면 Spring autoconf를 사용하고 사용자가 명시 적으로 라이브러리의 기능을 활성화해야합니다. –

+0

[The Spring documentation] (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html)을 참조하십시오. –

+0

당신의 도서관은 스프링에 의존하지 않을 것입니다 (스프링 의존성에 의존해서는 안됩니다). Spring 애플리케이션으로 라이브러리를 묶는 어댑터를 작성하는 것이 좋다. – Andrew

답변

1

도움이 될만한 경우 유틸리티 라이브러리에서 자동 와이어 링을 사용하지 않을 것입니다. 의존성 반전을 사용하여 실제로 라이브러리를 사용하는 순간까지 종속성 삽입을 지연하십시오. 그런 다음 클라이언트 응용 프로그램에서이를 Bean으로 선언하고 원하는 경우 autowiring을 사용할 수 있습니다.

마찬가지로 속성에서 가져오고 해당 메서드/생성자에 매개 변수를 만든 다음 각 클라이언트 응용 프로그램의 속성 파일을 사용하여 원하는 속성을 정의 할 수 있습니다.

+1

예, 이것입니다. 모두가 이것을했다면 나는 훨씬 더 행복하게 될 것입니다! 'MyLibraryConfiguration' 인터페이스를 생성하고 그것을 ctor에서 수신하십시오; 사용자가 그것을 Spring 빈처럼 구현하고 그들에게 달린 프로퍼티를 삽입하고자한다면. –