Ошибка при создании bean-компонента с именем securityConfiguration: неудовлетворенная зависимость, выраженная через поле myAppUserDetailsService;

Проект Spring boot 1.5.3 с тестовым пользовательским реестром на H2 в БД памяти

Это Ошибка Stacktrace

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfiguration': Unsatisfied dependency expressed through field 'myAppUserDetailsService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'SMRTUserService': Unsatisfied dependency expressed through field 'userInfoDAO'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SMRTUserDAO': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Post-processing of FactoryBean's singleton object failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #2 of URL [file:/C:/temp/SMRT/target/test-classes/data.sql]: ....

Может кто-нибудь помочь мне разобраться в проблеме? Я не могу решить эту ошибку.


Контроллер тестирования

public class CustomerControllerTest extends AbstractControllerTest {
    @Test
    @WithMockUser(roles = "ADMIN")
    public void testShow() throws Exception {
    mockMvc.perform(get("/customer/list")
        .contentType(APPLICATION_JSON_UTF8))
        .andExpect(status().isOk());
    }
}

AbstractControllerTest

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
@AutoConfigureMockMvc
public abstract class AbstractControllerTest extends AbstractTest {

    @Autowired protected MockMvc mockMvc;
    @Autowired private FilterChainProxy filterChainProxy;
    @Autowired private WebApplicationContext webApplicationContext;

    @Before
    public void setup() throws Exception {
        MockitoAnnotations.initMocks(this);

        this.mockMvc = webAppContextSetup(webApplicationContext)
            .dispatchOptions(true)
            .addFilters(filterChainProxy).build();
    }
}

Безопасность Конфигурация

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired private SMRTUserService myAppUserDetailsService;

    @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder;

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
        return bCryptPasswordEncoder;
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(myAppUserDetailsService)
            .passwordEncoder(bCryptPasswordEncoder);
    }
}

SMRTUSerService

@Service
@Slf4j
public class SMRTUserService implements UserDetailsService {
    @Autowired private ISMRTUserDAO userInfoDAO;
    @Autowired private SMRTUserRepository smrtuserRepository;
    ...
}

Спасибо

SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
0
0
1 590
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, ваше исключение уже довольно хорошо объясняет, в чем проблема:

Failed to execute SQL script statement #2 of URL [file:/C:/temp/SMRT/target/test-classes/data.sql]: ....

Я полагаю, вы импортируете некоторые тестовые данные для своих тестов? В ваших операторах SQL должна быть ошибка.

У меня есть только SRC / тест / ресурсы / data.sql с оператором INSERT (без оператора CREATE table, и у меня нет файла CREATE table .sql).

BNT 17.03.2018 13:59

В конце Stacktrace есть: Вызвано: org.h2.jdbc.JdbcSQLException: Таблица «РОЛЬ» не найдена; Оператор SQL: Я пытаюсь поместить код создания внутрь, но я нахожу способ сгенерировать его автоматически (ddl create).

BNT 17.03.2018 14:16

Вот и все. hibernate.hbm2ddl.auto=create в ваших свойствах должен сделать этот трюк

Christian Triebstein 17.03.2018 15:39

Я знаю, но ошибка всегда одна и та же, есть кое-что еще, что доставляет мне неприятности!

BNT 17.03.2018 17:35

У вас есть класс сущности для таблицы ролей? Можете ли вы предоставить код модели и свои свойства?

Christian Triebstein 17.03.2018 21:14

Похоже, это действительно ошибка SQL, скрытая в трассировке стека. Большое спасибо, Кристиан.

BNT 21.03.2018 08:55

Другие вопросы по теме