Spring Boot应用程序忽略了java配置

时间:2014-04-03 01:35:04

标签: spring-boot spring-java-config

我有一个相当简单的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的经验,但我一次又一次地浏览文档,我没有看到丢失的部分。

2 个答案:

答案 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起 * /