[SPRING] Spring에서 주석이있는 제 3 자 클래스를 어떻게 자동으로 작성합니까?
SPRINGSpring에서 주석이있는 제 3 자 클래스를 어떻게 자동으로 작성합니까?
Spring Boot에 대한 대부분의 예제는 간단한 웹 애플리케이션을 작성하는 데 중점을 둡니다. 즉, 모든 것을 완벽하게 제어 할 수있는 웹 응용 프로그램입니다.
다른 측면에서 볼 때 애플리케이션의 대부분이 제 3 자 코드에 의존하는 비 웹 애플리케이션을 구축하는 방법에 대한 예제를 찾는 데 많은 어려움이 없었습니다.
아래 내 com.mypackage.Application 클래스를 고려하십시오.
package com.mypackage;
import com.3rdparty.factory.ServiceFactory;
public class Application {
private final ServiceFactory sf;
public Application(ServiceFactory sf) {
this.sf = sf;
}
public void doSomeWork() {
ServiceA sa = sf.getServiceA();
[...]
}
Application 클래스는 단순히 DefaultManager를 인스턴스화하고 run ()을 호출합니다.
이제 타사 ServiceFactory 클래스에는 다음과 같은 추가 종속성이 있습니다.
package com.3rdparty.factory;
import com.3rdparty.service.ServiceA;
import com.3rdparty.service.ServiceA;
public class ServiceFactory {
private final ServiceA sa;
private final ServiceB sb;
public ServiceFactory(ServiceA sa, ServiceB sb) {
this.sa = sa;
this.sb = sb;
}
public ServiceA getServiceA() {
return sa;
}
public ServiceB getServiceB() {
return sb;
}
}
Main 클래스에서 응용 프로그램을 시작할 수 있습니다.
import com.mypackage.Application;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
Application app = (Application) context.getBean("app");
app.doSomeWork();
}
질문 : ServiceFactory에 ServiceS 및 ServiceS를 어떻게 삽입합니까? 이것은 제 3 자 클래스이며, 나는 그것을 제어 할 수 없으며 수정할 수 없습니다. 따라서 주석을 추가 할 수 없습니다.
이 작업을 XML 구성으로 쉽게 수행 할 수는 있지만 요즘은 어노테이션이 "베스트 프랙티스"방식 인 것처럼 보이므로 어노테이션을 어떻게 작동시킬 수 있는지 알고 싶습니다.
이 작업을 수행하는 주석 방법에 많은 양의 코드가 포함된다면 이해할 수 있다고 생각되는 XML 구성과 비교하여 어떤 이점이 있는지 알고 싶습니다. 서로 다른 프로젝트에서 쉽게 진행될 수있는 패턴을 제공합니다.
해결법
-
==============================
1.SomeFactory를 Bean으로 빌드하는 @Configuration 클래스를 정의해야합니다.
SomeFactory를 Bean으로 빌드하는 @Configuration 클래스를 정의해야합니다.
@Configuration class SomeFactoryConfiguration { @Bean public ServiceFactory serviceFactory() { return new ServiceFactory(/* create/get ServiceA and ServiceB somehow */): } }
이렇게하면이 ServiceFactory 인스턴스가 스프링 애플리케이션의 Bean으로 노출되어 간단히 autowire 할 수 있습니다.
원하는 경우 ServiceS 및 Service as Beans를 작성한 다음 ServiceFactory 작성시이를 참조 할 수 있습니다.
@Configuration class SomeFactoryConfiguration { @Bean public ServiceFactory serviceFactory() { return new ServiceFactory(serviceA(), serviceB()): } @Bean public ServiceA serviceA() { return new ServiceA(); } @Bean public ServiceB serviceB() { return new ServiceB(); } }
from https://stackoverflow.com/questions/36010544/how-do-i-autowire-3rd-party-classes-with-annotations-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring HATEOAS 대 Spring 데이터 Rest (0) | 2019.03.01 |
---|---|
[SPRING] Spring 빈에서 새로운 트랜잭션 시작하기 (0) | 2019.03.01 |
[SPRING] Java 예제 : Quartz를 사용한 동적 작업 스케줄링 (0) | 2019.03.01 |
[SPRING] 스프링 3 JSON (MVC 포함) (0) | 2019.03.01 |
[SPRING] Spring Controller의 Init 메소드 (주석 버전) (0) | 2019.03.01 |