2014-12-17 5 views
0

Я использую Spring Boot 1.2.0 со встроенной базой h2. База данных инициализируется с использованием файла schema.sql в пути к классам. Он работал нормально, пока я не добавил @EnableGlobalMethodSecurity аннотацию к классу WebSecurityConfiguration.DataSourceInitializer: ApplicationEventMulticaster не инициализирован

java.lang.IllegalStateException: ApplicationEventMulticaster не инициализирован исключение из DataSourceInitializer.runSchemaScripts

Что может быть проблема?

Вот код:

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

@EnableGlobalMethodSecurity(securedEnabled = true) 
@Configuration 
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter { 

    @Autowired 
    DataSource dataSource; 

    @Override 
    public void init(AuthenticationManagerBuilder auth) throws Exception { 
     auth.jdbcAuthentication().dataSource(dataSource); 
    } 
} 
+0

Это выглядит как [# 1711] (https://github.com/spring-projects/spring-boot/issues/1711). 'WebSecurityConfiguration' находится в другом классе вашего основного' приложения', правильно? –

+0

'WebSecurityConfiguration' находится в другом классе. Я также попытался сделать его внутренним классом основного приложения. Но у меня такое же исключение. – leon01

ответ

0

Я думаю, что решение не использовать init метод для настройки аутентификации JDBC. Попробуйте использовать отдельный класс, который расширяет GlobalAuthenticationConfigurerAdapter и переопределяет метод config.

+0

Я перевел настройку аутентификации JDBC в метод 'configure', но получаю то же исключение. – leon01

+0

Какой способ конфигурации? –

+0

Проблема выглядит так же, как [1386] (https://github.com/spring-projects/spring-boot/issues/1386). Поэтому я переместил DML в schema.sql. – leon01

Смежные вопросы