Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Аннотации. Внедрение бина через сеттер в методе main / 10 сообщений из 10, страница 1 из 1
20.07.2018, 11:28
    #39676747
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
Всем привет!

Изучаю Spring 5.0. Пытаюсь внедрить бин client в методе main. Получаю ошибку:

авторException in thread "restartedMain" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NullPointerException
at com.example.springlogger.SpringLoggerApplication.main(SpringLoggerApplication.java:20)
... 5 more
SpringLoggerApplication.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
package com.example.springlogger;

import com.example.springlogger.bean.Client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringLoggerApplication {
	private Client client;

	public void setClient(Client client) {
		this.client = client;
	}

	public static void main(String[] args) {
		SpringApplication.run(SpringLoggerApplication.class, args);

		SpringLoggerApplication app = new SpringLoggerApplication();
		app.setClient(app.client);
                System.out.println(app.client.getFullName());
	}
}



AppConfig.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
package com.example.springlogger;

import com.example.springlogger.bean.Client;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public Client getClient() {
        return new Client();
    }
}



Client.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
package com.example.springlogger.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class Client {
    @Value("1")
    private int id;
    @Value("FullName")
    private String fullName;

    public Client() {
    }

    public Client(int id, String fullName) {
        this.id = id;
        this.fullName = fullName;
    }

    public String getFullName() {
        return fullName;
    }
}
...
Рейтинг: 0 / 0
20.07.2018, 11:38
    #39676755
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
Этот объект не находится под управлением контейнера, скорее наоборот, поэтому вряд ли в него что-то удастся внедрить.
...
Рейтинг: 0 / 0
20.07.2018, 11:40
    #39676756
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
HettЭтот объект не находится под управлением контейнера, скорее наоборот, поэтому вряд ли в него что-то удастся внедрить. Этот это какой? Что нужно, чтобы можно было внедрять?
...
Рейтинг: 0 / 0
20.07.2018, 11:41
    #39676759
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
этот = SpringLoggerApplication
...
Рейтинг: 0 / 0
20.07.2018, 11:43
    #39676762
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
зачем его туда вообще внедрять?
клиент на все приложение один что ли будте?
...
Рейтинг: 0 / 0
20.07.2018, 11:47
    #39676770
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
надо делать так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@SpringBootApplication
public class SpringLoggerApplication {

	public static void main(String[] args) {
		ConfigurableApplicationContext context = SpringApplication.run(SpringLoggerApplication.class, args);

		SpringLoggerApplication app = new SpringLoggerApplication();
		app.setClient(context.getBean("client"));

                System.out.println(app.client.getFullName());
	}
}
...
Рейтинг: 0 / 0
20.07.2018, 12:04
    #39676791
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
ну это уже внедрение)
...
Рейтинг: 0 / 0
20.07.2018, 12:05
    #39676792
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
Hett,

только я не понял смысла, когда компонент уже имеется в виде объекта (компонента)
...
Рейтинг: 0 / 0
20.07.2018, 15:50
    #39676989
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
я опечатался,

"ну это уже НЕ внедрение)"
...
Рейтинг: 0 / 0
20.07.2018, 16:24
    #39677011
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring. Аннотации. Внедрение бина через сеттер в методе main
Hettя опечатался,

"ну это уже НЕ внедрение)"

это верно
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring. Аннотации. Внедрение бина через сеттер в методе main / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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