Помогите, не могу разобраться. Я начал изучать Spring (IoC Concept), разобрал как можно конфигурировать бины через xml и отдельно через аннотации, но не пойму возможно ли создать бин в java-классе с аннотацией @Configuration и заполнить его поля, например, через сеттеры() в xml конфигурации?
Пример конфигурирования самого бина непосредственно при его инициализации в контексте, и да - нет, Вы не сможете через сеттеры с помощью хмл конфигурировать бин
@Bean
@ServiceActivator(inputChannel = "tcpOutChannel")
public TcpSendingMessageHandler tcpOut(AbstractServerConnectionFactory connectionFactory) {
TcpSendingMessageHandler gateway = new TcpSendingMessageHandler();
gateway.setConnectionFactory(connectionFactory);
return gateway;
}
Дополню ответ от @GenCloud.
Можно сконфигурить бины (@Bean
), если передать в параметры бина-метода значения из Spring-конфига или Spring-properties-файла.
На Spring это можно сделать через @Value
.
На SpringBoot это можно сделать через @ConfigurationProperties
.
Примеры:
@Value("${group1.group2.param55:defaultValue}")
private String property;
@ConfigurationProperties("acme")
public class AcmeProperties {
private boolean enabled;
private InetAddress remoteAddress;
private final Security security = new Security();
public boolean isEnabled() { ... }
public void setEnabled(boolean enabled) { ... }
public InetAddress getRemoteAddress() { ... }
public void setRemoteAddress(InetAddress remoteAddress) { ... }
public Security getSecurity() { ... }
public static class Security {
private String username;
private String password;
private List<String> roles = new ArrayList<>(Collections.singleton("USER"));
public String getUsername() { ... }
public void setUsername(String username) { ... }
public String getPassword() { ... }
public void setPassword(String password) { ... }
public List<String> getRoles() { ... }
public void setRoles(List<String> roles) { ... }
}
}
Пример прямой передачи параметров в @Bean
:
@Bean
public MyClass myClass(@Value("${group1.group2.param55:defaultValue}") myProperty){
return new MyClass(myProperty);
}
Подробнее можно почитать здесь:
Spring Boot features - Externalized Configuration
Reading a List from properties file and load with spring annotation @Value
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли запустить код, который написан на Java, из программы, которая написана на Python? Как, например, asm в c++А точнее, как из плагина на Питоне...
То есть пользователь видит Изменить имя: АлексейИ он может редактировать слово Алексей
Ребят, тут такая лажа, javac отказывается компилироватьЧто делать? Пробовал и javac и javac