У меня есть класс конфигурации, в котором я устанавливаю свойства JavaMailSenderImpl
, но я хочу не устанавливать значения в @Bean
, а просто установить их для получения через методы (например: mailSender.setPort(ClassImpl.getPort());
).Ниже приведен код, и я попытался передать значения через геттеры, но я получил npe.
//properties.file
mail.host=the_host
mail.port=123
mail.username=the_username
mail.password=the_password
// ClassInterface has only one sendMail method
@Component
public class ClassImpl implements ClassInterface{
@Value("${mail.host}")
public String host;
@Value("${mail.port}")
private int port;
@Value("${mail.username}")
private String username;
@Value("${mail.password}")
private String password;
public String getHost() {
return host;
}
public int getPort() {
return port;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
@Autowired
JavaMailSenderImpl mailSender;
@Override
public void sendMail(String sender, String receiver, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(receiver);
message.setSubject(subject);
message.setText(content);
mailSender.send(message);
}
}
@Configuration
@ComponentScan
public class SpringConfiguration {
@Bean
public JavaMailSenderImpl mailSenderService() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host_here);
mailSender.setPort(port_here);
mailSender.setUsername(user_here);
mailSender.setPassword(pwd_here);
return mailSender;
}
}
РЕДАКТИРОВАТЬ
попытался сделать это getHost static
и передайте метод следующим образом:
mailSender.setHost(ClassImpl.getHost());
// but I get the 'refused to connect' and it sets the value to 'localhost'
// and not to the value @Value host I need from properties.file