我有一个相当简单的Spring Boot应用程序,我正在使用一些Java Config类。但是,似乎没有获取配置。我到处都有破发点,但没有任何东西被绊倒。我甚至抛出了一些RuntimeException
只是为了看看我的调试器是否在fritz上。
在我的主要课程中,我有标准的Spring Boot主要内容:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如您所见,我使用@ComponentScan
和@EnableAutoConfiguration
对其进行了标记。 Application
类位于类路径的根部。我对@ComponentScan
注释的理解是它将搜索其下的所有配置类。
在一个包中,我有所有的配置类:
我的“常见”配置
@Configuration
@EnableJpaRepositories("com.codechimp.XXX.repository")
@EnableTransactionManagement
public class AppCommonConfig {
@Inject
private Environment environment;
/* Define common beans here like datasource and such */
}
我的Spring Security配置
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Inject
private LocalXXXUserDetailsService localXXXUserDetailsService;
/**
* @see org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(HttpSecurity)
*/
@Autowired
protected void configure(HttpSecurity http) throws Exception {
// Configure http
}
/**
* @see org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configureGlobal(AuthenticationManagerBuilder)
*/
@Autowired
protected void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
// Configure auth
}
}
但是,当我运行应用程序时,它似乎不会调用这些配置类中的任何一个方法。就好像他们被完全忽略了一样。正如我所说,我已经尝试设置断点,甚至在所有方法的开头都抛出一个RuntimeException:
if (true)
throw new RuntimeException("Break!");
不可否认,我没有太多使用Java Config的经验,但我一次又一次地浏览文档,我没有看到丢失的部分。
答案 0 :(得分:1)
我认为您需要Application
成为@Configuration
。
从默认包中执行@ComponentScan
并不是一个好主意(我假设你的意思是“类路径的根”)。这肯定会关闭一些东西,但更严重的是它会导致对类路径中所有jar的大量扫描,这不是一个好主意(并且可能导致应用程序失败)。
答案 1 :(得分:0)
您需要添加
@SpringBootApplication
到您的Spring Boot主类。从文档中:
/ ** *表示声明一个或多个的{@link Configuration configuration}类 * {@link Bean @Bean}方法并触发{@link EnableAutoConfiguration *自动配置}和{@link ComponentScan组件扫描}。这很方便 *等同于声明{@code @Configuration}的注释, * {@code @EnableAutoConfiguration}和{@code @ComponentScan}。 * * @作者Phillip Webb * @作者Stephane Nicoll * @自1.2.0起 * /