Есть два класса
PersistenceConfig:
@Configuration
@PropertySource("classpath:application.properties")
public class PersistenceConfig {
@Autowired
private DataSource dataSource;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
//...
MailConfig:
@Configuration
@PropertySource("classpath:application.properties")
public class MailConfig {
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
@Value("${spring.mail.port}")
private int port;
@Value("${spring.mail.protocol}")
private String protocol;
@Value("${mail.debug}")
private String debug;
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl mailSenderImpl = new JavaMailSenderImpl();
mailSenderImpl.setHost(host);
mailSenderImpl.setPort(port);
mailSenderImpl.setUsername(username);
mailSenderImpl.setPassword(password);
Properties properties = mailSenderImpl.getJavaMailProperties();
properties.setProperty("mail.transport.protocol", protocol);
properties.setProperty("mail.debug", debug);
return mailSenderImpl;
}
А проблема в том, что в MailConfig параметры спокойно цепляются из файла application.properties, а в PersistenceConfig все переменные инициализируются все равно null'ами, хотя среда разработки вроде как видит эти параметры. Может сталкивался кто с таким.
В общем забавная штука. Если ставить
@Autowired private DataSource dataSource;
после Value полей, то они инициализируются, но не переменными из пропертей, а этими вот самыми строчками с долларом. Ну то есть скажем поле
@Value("${spring.mail.host}")
private String host;
инициализируется строкой "${spring.mail.host}", а не тем, что лежит в проперти по этой ссылке. Почему? А вот оказывается некоторые бины влияют на это. У меня в этом же классе лежал бин
@Bean
public PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
return new PersistenceExceptionTranslationPostProcessor();
}
И если его убрать в другой класс, то переменные инициализируются верно. Логического объяснения этому у меня пока нет. Наверняка где-то в документации это описано.
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть проблема в сортировке MapИмеется LinkedHashMap с ключами типа "September-2018", "October-2018", "November-2017", "November-2018"
До недавнего времени я был почти на 100% убеждён в том, что прекрасно понимаю сущность констант в языке программирования JavaТак было, пока я не наткнулся...
Хочу протестить свой кодЛично я ошибок не нахожу(почти), другие люди находят