Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно инжектить бин в статическом методе main? / 15 сообщений из 15, страница 1 из 1
08.02.2019, 09:36
    #39770935
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно инжектить бин в статическом методе main?
Всем привет!

Есть класс, есть класс с настройками бина этого класса.
Как правильно инжектить бин в статическом методе 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
08.02.2019, 10:08
    #39770967
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно инжектить бин в статическом методе main?
Molasar,

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



но правильнее CommanLineRunner и инжектом ApplicationContext
...
Рейтинг: 0 / 0
08.02.2019, 10:37
    #39770986
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно инжектить бин в статическом методе main?
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
08.02.2019, 13:26
    #39771080
alex55555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно инжектить бин в статическом методе main?
Ужос, вот ведь сколько народ пользует этот свинг, а всё ещё о нём даже элементарных вещей не знает.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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