这当然是可能的。一旦你掌握了它的窍门,设置就很简单了——只需在库中添加一个配置类,在消费应用程序中添加一个 @Import。
注意:到目前为止,我只使用 JPA 和自动装配对此进行了测试,我相信它应该适用于大多数常见的 Spring 功能,但还不能确认这一点。
所以在你的库中的 src/main/etc..
@Configuration
@EntityScan(basePackages = "uk.co.company.name.models")
@ComponentScan(basePackages = { "uk.co.company.name" })
@EnableJpaRepositories("uk.co.company.name")
public class LibraryNameConfig {
}
然后在 src/test 中
@SpringBootApplication
@Import({ LibraryNameConfig.class})
public class FakeTestApp {
public static void blah() {}
}
正常测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = FakeTestApp.class)
public class TestTestModelWiredUp {
@Autowired
TestModelService testModelService;
@Test
public void contextLoads() {
}
}
这应该可以很好地与标准 gradle/mvn 一起使用以生成经过测试的 jar。
然后在另一个 Spring Boot 应用程序中使用它,将 jar 作为依赖项包含在标准中
要使其在应用程序中工作,您只需像上面一样再次@Import。我已经使用导入的配置类以相同的方式设置了我的应用程序和库。似乎有几十种方法可以在 Spring Boot 中使用注释进行配置,这种设置对我有用。
@SpringBootApplication
@Import({ LibraryNameConfig.class, RealAppConfig.class})
public class SpringBootApp {
public static void aFunction() {}
}
您需要库中的 application.properties 进行测试,但当作为库包含时,它将使用应用程序的属性。