В документации приведен такой пример:
@Configuration
public class AppConfig {
@Bean
public ClientService clientService1() {
ClientServiceImpl clientService = new ClientServiceImpl();
clientService.setClientDao(clientDao());
return clientService;
}
@Bean
public ClientService clientService2() {
ClientServiceImpl clientService = new ClientServiceImpl();
clientService.setClientDao(clientDao());
return clientService;
}
@Bean
public ClientDao clientDao() {
return new ClientDaoImpl();
}
}
И сказано, что в этом случае будет не 2 экземпляра ClientDAO
, а один. И связано это с тем, что ClientDAO
- это Singleton и классы помеченные @Configuration
по умолчанию используют CGLIB
proxy.
Мне интересно, а что будет, если класс AppConfig
будет помечен @Component вместо @Configuration? Или Spring использует прокси для всех компонентов?
Связано это с тем, что все бины в Spring - это одиночки по умолчанию. Цитата оттуда же:
in Spring, instantiated beans have a singleton scope by default
А CGLIB - это способ, с помощью которого Spring добивается в данном случае возврата одного и того же экземпляра при каждом вызове метода.
CGLIB - это аббревиатура от Code Generation Library. Без кодогенарации не удалось бы перехватить вызовы метода внутри класса. Обычные JDK Dynamic proxy позволяют перехватывать только "внешние" вызовы.
отправляю POST запрос в строку поиска, и нужно получить страницу ответную например В поисковую строку StackOverFlow вбиваю TEST И получаю https://rustackoverflow
Как получить никальное id для device-a которое не будет изменяться даже после перепрошивки ?в котором я могу быть уверен на все 100 %это MacAdress,Imei...
Который раз уже пересоздаю приложение, появляется одно и то