Serggalas
@Serggalas
Учусь

Почему SpringBoot не видит ни одного моего бина?

вот структура проекта
63e3f1ea02cf8045328087.png

вот класс Main
@ConfigurationPropertiesScan
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
      ApplicationContext applicationContext =  SpringApplication.run(ApplicationRunner.class, args);
        System.out.println(applicationContext.getBeanDefinitionCount());
        System.out.println(applicationContext.getBean("pool", ConnectionPool.class));
        System.out.println(applicationContext.getBean(DatabaseProperties.class));
    }
}


вот к примеру класс ConnectionPool
package ru.sergalas.spring.database.pool;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component("pool")
@RequiredArgsConstructor
@Slf4j
public class ConnectionPool {

    @Value("${db.username}")
    private final String username;

    @Value("${db.pool.size}")
    private final Integer poolSize;


    @PostConstruct
    private void init() {
        log.info("Init connection pool");
    }

    @PreDestroy
    private void destroy() {
        log.info("Clean connection pool");
    }
}

но при запуске проекта выдается ошибка
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'pool' available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:874)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1358)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:309)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1160)
	at ru.sergalas.spring.Main.main(Main.java:17)

причем applicationContext.getBeanDefinitionCount() выдает 6 и это спринговые бины. Хотя все мои классы помечены или @Component или @Services, @Repository не подскажете почему ?
  • Вопрос задан
  • 575 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Надо добавить первой строкой в метод main:
SpringApplication.run(Main.class, args);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
А попробуй так

System.out.println(applicationContext.getBean(ConnectionPool.class));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект