Spring. @Transactional - исключение NoSuchBeanDefinitionException

149
23 января 2020, 18:30

Изучаю Spring, и сейчас я на этапе транзакций. Стали интересны именно транзакции Hibernate. Но при запуске программы возникает исключение:

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.vladhuk.examples.HibernateSpitterDao' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:343)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:335)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1101)
    at com.vladhuk.examples.Main.main(Main.java:12)

Конфигурация:

@Configuration
@ComponentScan
@EnableTransactionManagement
public class Config {
    @Bean
    public BasicDataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/java_test?useSSL=false & serverTimezone=Europe/Kiev");
        dataSource.setUsername("vladhuk");
        dataSource.setPassword("1");
        return dataSource;
    }
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setHibernateProperties(hibernateProperties());
        sessionFactory.setPackagesToScan("com.vladhuk.examples");
        return sessionFactory;
    }
    private Properties hibernateProperties() {
        Properties hibernateProperties = new Properties();
        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "create");
        hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        return hibernateProperties;
    }
    @Bean
    public HibernateTransactionManager transactionManager() {
        HibernateTransactionManager tm = new HibernateTransactionManager();
        tm.setSessionFactory(sessionFactory().getObject());
        return tm;
    }
}

Класс DAO, вызывающий исключение:

@Component
@Transactional
public class HibernateSpitterDao implements SpitterDao {
    private SessionFactory sessionFactory;
    @Autowired
    public HibernateSpitterDao(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public void addSpitter(Spitter spitter) {
        Session session = sessionFactory.openSession();
        session.save(spitter);
        session.close();
    }
    public Spitter getSpitterById(long id) {     
        return sessionFactory.getCurrentSession().get(Spitter.class, id);
    }
    public void saveSpitter(Spitter spitter) {
        Session session = sessionFactory.openSession();
        session.update(spitter);
        session.close();
    }
}
READ ALSO
Для чего toString() в StringBuffer?

Для чего toString() в StringBuffer?

Чем отличаются эти строчки ?

128
Передать переменную из URL в val()

Передать переменную из URL в val()

Нужно чтобы при вызове sitecom/?Email=ivan

126
Не корректно работает нажатие на кнопку в javascript

Не корректно работает нажатие на кнопку в javascript

Пытаюсь немного упростить себе жизнь и решил написать javascript-код, который при загрузке страницы автоматически заполняет необходимы поля...

101
Как сделать динамический навбар?

Как сделать динамический навбар?

Задача такая - сделать динамически изменяющий цвет навбар, взависимости от высоты он должен плавно менять цвет

134