如何在库项目中配置依赖注入?

时间:2016-03-23 18:10:06

标签: java spring maven spring-boot

如何在库项目中配置依赖注入?

让我用下面的例子说明这个问题。

Maven图书馆计划

ReservationAPI

com.example.reservation-API

这个项目包含一个名为 ReservationApiClient 的便利类,它使用RestTemplate(来自Spring Framework)进行HTTP调用。

是否可以在此库项目中创建RestTemplate字段@Autowired而不是自己实例化它?

Maven可执行项目

org.company.application

该项目是一个Spring Boot应用程序,使用上面的ReservationAPI作为依赖项。此应用程序将为该库中包含的便捷类 ReservationApiClient 创建一个@Bean,然后执行其公共方法,然后再发出HTTP请求。

上述方案的优秀策略和/或最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

如果在库项目中包含自动装配,则可以执行此操作,但这意味着它总是需要与Spring应用程序上下文一起使用才能获取值,除非您还要使用getter / setter方法。但是,我不认为使用RestTemplate作为自动装配对象是有意义的,因为没有任何关于RestTemplate的具体内容,除非您命名bean,否则只有一个类的bean定义。无论如何,RestTemplate的所有方法都需要URI。因此,在这种情况下,我只需在您的应用程序中使用您的ReservationApiClient bean。

另一种方法是,如果要在库中包含Spring依赖项(我猜你已经使用RestTemplate),可以将ReservationApiClient声明为@Service或@Component,然后使用{{3主Spring Boot项目中的注释,用于在库中搜索要包含在bean注册表中的组件。

另一种选择是使用Spring Boot的Autoconfigure等功能来创建使用第三方库的工厂,并在应用程序设置中为每个属性配置它们。 @ComponentScan将是一个很好的开始。您可以看到他们拥有的入门项目auto configuration documentation,然后是与之关联的on GitHub

如果有任何意义,请告诉我。