Spring context. Конфигурирование классов
Создал главный класс Main, класс InjectionContext и класс Vk Bot. Попытка управлять классом через инжекции не к чему не приводит. Ошибок нет, но и вывода сообщения нет. Подскажите пожалуйста в чем моя ошибка?
package reversbot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@SpringBootApplication
public class Main {
public static void main(String... args) {
ApplicationContext context = new AnnotationConfigApplicationContext (InjectionContext.class);
}
}
package reversbot;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reversbot.injectioncontext.VkBot;
import javax.annotation.PostConstruct;
@Configuration
public class InjectionContext {
@Bean
public VkBot vkBot() {
return new VkBot();
}
}
package reversbot.injectioncontext;
import org.springframework.stereotype.Service;
@Service
public class VkBot {
public static void hello(){
System.out.println("Hello BOSS!!!!");
}
}
plugins {
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
}
group = 'ReversBot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '18'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
Ответы (1 шт):
Все правильно Spring делает.
Ничего не происходит, потому что вы ничего не делаете.
В том смысле, что вы ничего не вызываете.
Да, вы создаете бин VkBot...
Но он ничего не делает!
По всей видимости вы ждете что он выведет в консоль Hello BOSS!!!!, но он этого не сделает, потому что Вы не вызываете данный метод (я про метод hello()).
Он вообще в статическом методе находится!
Если хотите чтобы бин при создании выводил в консоль Hello BOSS!!!! - перенесите данный код в конструктор или инициализирующий метод.
package reversbot.injectioncontext;
import org.springframework.stereotype.Service;
@Service
public class VkBot {
// создаем конструктор
public VkBot() {
// и переносим вызов сюда
System.out.println("Hello BOSS!!!!");
}
// Убираем данные метод
// public static void hello(){
// System.out.println("Hello BOSS!!!!");
// }
}
и все начинает выводиться
