我正在开发一个相当简单的 Spring Boot 应用程序,它使用了一些 Java Config 类。但是,似乎配置没有被拾取。我到处都有断点,但没有任何东西被绊倒。我什至扔了几个RuntimeException
s 只是为了看看我的调试器是否在弗里茨。
在我的主课中,我有标准的 Spring Boot 主课:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如您所见,我用@ComponentScan
and标记了它@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 方面没有太多经验,但我一遍又一遍地阅读文档,我没有看到缺失的部分。