我在一个多模块项目(maven)上使用spring-boot.每个模块都有自己的@Configuration类.基本上我有以下布局
模块foo-embedded(运行只调用SpringApplication.run())方法:
@Configuration
@EnableAutoConfiguration
@ComponentScan("de.foobar.rootpackage")
@Import({ApplicationConfig.class, RepositoryConfig.class, SecurityConfig.class})
public class FooApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(FooApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
模块foo-common(包含所有bean和spring-data-jpa初始化配置)
@Configuration
@EnableJpaRepositories
@EnableTransactionManagement(entityManagerFactoryRef="entityManagerFactory")
public class RepositoryConfig {
@Bean(destroyMethod = "shutdown")
public DataSource getDataSource() {
// returning a Hikari CP here
}
@Bean(name = "entityManagerFactory") // overriding spring boots default
public EntityManagerFactory getEntityManagerFactory() {
// returning a new LocalEntityManagerFactoryBean here
}
}
Run Code Online (Sandbox Code Playgroud)
模块foo-security(包含spring-securiy配置和相关的域类),它具有对foo-common的maven依赖性
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// configuring …Run Code Online (Sandbox Code Playgroud)