powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно инжектить бин в статическом методе main?
15 сообщений из 15, страница 1 из 1
Как правильно инжектить бин в статическом методе main?
    #39770935
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть класс, есть класс с настройками бина этого класса.
Как правильно инжектить бин в статическом методе main?

если делаем так, то получаем Exception in thread "main" java.lang.NullPointerException:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@SpringBootApplication
public class Application {
    
    @Autowired
    CountryClient countryClient;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        String country = "Spain";
               
        Application app = new Application();

        GetCountryResponse response = app.countryClient.getCountry(country);
        System.out.println(response.getCountry().getCurrency());
    }

}


Нашел только такой способ, но он кажется мне устаревшим:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        String country = "Spain";
        
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(CountryConfiguration.class);
        CountryClient countryClient = ctx.getBean(CountryClient.class);
 
        GetCountryResponse response = countryClient.getCountry(country);
        System.out.println(response.getCountry().getCurrency());
    }

}


Может кто знает другие варианты?
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39770967
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar,

этого делать там не надо. Если вы что-то хотите сделать после того, как приложение "стартануло", есть
CommandLineRunner или ApplicationRunner
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39770976
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
ApplicationContext context = SpringApplication.run(Application.class, args);



но правильнее CommanLineRunner и инжектом ApplicationContext
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39770986
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
Код: java
1.
ApplicationContext context = SpringApplication.run(Application.class, args);



но правильнее CommanLineRunner и инжектом ApplicationContext

не надо ApplicationContext инжектить.

Можно ваще отдельной конфигурацией все оформить.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Configuration
public class DevDataBaseInitializer {

 @Bean
  CommandLineRunner initDatabase(
      YourService yourService) {
    return args -> {yourService.yourMethod();};
)



Можно это же бин сделать в классе с @SpringBootApplication
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771080
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужос, вот ведь сколько народ пользует этот свинг, а всё ещё о нём даже элементарных вещей не знает.

Инжектить в статический метод нельзя .

Интересно, этого действительно нет в документации и потому я имею право ещё раз удовлетворённо сказать - свниг отстой?

ЗЫ. Вообще, а документацию хоть кто-то читал? Или всё на примерчиках да на вот таких вот вопросах выезжаем? Привычка находить ответы только на стэковерфлоу до добра не доводит.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771088
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Ужос, вот ведь сколько народ пользует этот свинг, а всё ещё о нём даже элементарных вещей не знает.

Инжектить в статический метод нельзя .

Интересно, этого действительно нет в документации и потому я имею право ещё раз удовлетворённо сказать - свниг отстой?

ЗЫ. Вообще, а документацию хоть кто-то читал? Или всё на примерчиках да на вот таких вот вопросах выезжаем? Привычка находить ответы только на стэковерфлоу до добра не доводит.

не смотря на сам вопрос, человек инжектит прокси в инстанс класс .а уж статик метод взаимодействует с этим прокси, работа чего зависит от положения звезд на небе , но работать вполне может.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771527
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинчеловек инжектит прокси в инстанс класс .а уж статик метод взаимодействует с этим прокси, работа чего зависит от положения звезд на небе , но работать вполне может.
Инстанс создаётся в статическом методе. Звёзды не повлияют на неработоспособность такого варианта. Он просто никогда не сработает, независимо от звёзд.

Для понимания стоит просто представить, как и откуда появляется ссылка в поле класса. И потом сравнить с использованным вариантом. Вообще-то это элементарно.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771556
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Озверинчеловек инжектит прокси в инстанс класс .а уж статик метод взаимодействует с этим прокси, работа чего зависит от положения звезд на небе , но работать вполне может.
Инстанс создаётся в статическом методе. Звёзды не повлияют на неработоспособность такого варианта. Он просто никогда не сработает, независимо от звёзд.

Для понимания стоит просто представить, как и откуда появляется ссылка в поле класса. И потом сравнить с использованным вариантом. Вообще-то это элементарно.

Конечно же молодой человек не создает никакой инстанс в статическом методе - для этого хватает лишь посмотреть его код. Вообщем-то - это элементарно. И это будет работать, в зависимости от того, успелся инициализироваться контекст до вызова метода - или нет.

Код: java
1.
2.
 @Autowired
    CountryClient countryClient;
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771828
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинКонечно же молодой человек не создает никакой инстанс в статическом методе - для этого хватает лишь посмотреть его код. Вообщем-то - это элементарно. И это будет работать, в зависимости от того, успелся инициализироваться контекст до вызова метода - или нет.

Это что за инициализация такая, которая неизвестно когда закончится? Убогой либе специально суют класс, но оно поданный класс тупо игнорирует и ничего не инициализирует. И вот оказывается, оно как-то там хитро инициализируется! Не знал. Но с другой стороны это же отличный повод сказать с ещё большей уверенностью - свинг = отстой. Тупо стартовать не умеет. Нужно потанцевать с бубном, что бы это поделие хоть на что-то было способно.

Хотя может чел чего-то в файликах наконфигурил, а свинг же тупой, противоречия в настройках воспринимает как захочет.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39771927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувак.

Swing и Spring это кагбе разные вещи.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39772012
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555ОзверинКонечно же молодой человек не создает никакой инстанс в статическом методе - для этого хватает лишь посмотреть его код. Вообщем-то - это элементарно. И это будет работать, в зависимости от того, успелся инициализироваться контекст до вызова метода - или нет.

Это что за инициализация такая, которая неизвестно когда закончится? Убогой либе специально суют класс, но оно поданный класс тупо игнорирует и ничего не инициализирует. И вот оказывается, оно как-то там хитро инициализируется! Не знал. Но с другой стороны это же отличный повод сказать с ещё большей уверенностью - свинг = отстой. Тупо стартовать не умеет. Нужно потанцевать с бубном, что бы это поделие хоть на что-то было способно.

Хотя может чел чего-то в файликах наконфигурил, а свинг же тупой, противоречия в настройках воспринимает как захочет.

причем тут свинг? когда инициализация закончится - известно. Тебя все время несет куда-то, где ты понятия ничего не имеешь, о чем разговор.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39772210
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonSwing и Spring это кагбе разные вещи.
Да, согласен, перепутал :(
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39778636
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Ужос, вот ведь сколько народ пользует этот свинг, а всё ещё о нём даже элементарных вещей не знает.

Инжектить в статический метод нельзя .


Инжектить нельзя, а вот из контекста приложения вытащить можно ;-)

alex55555Интересно, этого действительно нет в документации и потому я имею право ещё раз удовлетворённо сказать - свниг отстой?

ЗЫ. Вообще, а документацию хоть кто-то читал? Или всё на примерчиках да на вот таких вот вопросах выезжаем? Привычка находить ответы только на стэковерфлоу до добра не доводит.

А вот с примерами иногда бывает "засада", там как раз многие вещи демонстрируются в методе "public static void main(String... args)".
Что как бы не хорошо.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39778638
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, если такие примеры и есть, то они все из преданий старины глубокой. КоммандрРаннер сто лет как существует и в основном в нем происходит вся магия примеров.
...
Рейтинг: 0 / 0
Как правильно инжектить бин в статическом методе main?
    #39779226
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинmad_nazgul, если такие примеры и есть, то они все из преданий старины глубокой. КоммандрРаннер сто лет как существует и в основном в нем происходит вся магия примеров.

Ну если гуглить, то в основном такие примеры и выходят, без CoomandLineRunner :-)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно инжектить бин в статическом методе main?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]