Не удается прочитать значение файла свойств в классе конфигурации Spring

Я пытаюсь простую программу spring, которая имеет класс PersistenceConfig с аннотацией @Configuration

   @Configuration
   @PropertySource("classpath:application.properties")
   public class PersistanceConfig {
        @Value("${dbPassword}")
        private String dbPassword;

        // Set of Beans and Code

        @Bean
        public DataSource dataSource() {
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            dataSource.setUrl("jdbc:sqlserver://localhost;databaseName=GovernmentPayment;integratedSecurity=false;");
            dataSource.setUsername("sa");
            dataSource.setPassword(dbPassword);
            return dataSource;
        } 


        @Bean
        public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
            return new PropertySourcesPlaceholderConfigurer();
        }
   }

Когда я запускаю свою программу, значение dbPassword всегда null, но если я пытаюсь прочитать то же самое значение внутри одного из моих контроллеров, он читает значение без каких-либо проблем.
Я попробовал autowiring переменную среды и использовать его вместо @Value, но это не сработало. (Spring не ввел значение в переменную среды)

Я использую пружину 4

То, что в основном хотят, чтобы экстернализовать имя пользователя и пароль базы данных в отдельном файле свойств.

1 ответ

  1. я не вижу никаких проблем с данным кодом.я написал простой модульный тест для вашего класса, чтобы доказать, что он работает.

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes=PersistanceConfig.class)
    public class PersistanceConfigTest {
    
        @Autowired
        private DriverManagerDataSource dataSource;
    
        private final String password = "mydbPassword";
    
    
        @Test
        public void testDriverManagerDataSourcePassword() {
            System.out.println("dataSource Password :: " + dataSource.getPassword());
            assertNotNull(dataSource);
            assertTrue(password.equals(dataSource.getPassword()));
        }
    
    }
    

    предполагая, что у вас есть приложение.свойства в src / main / resources и dbPassword=mydbPasswordпредставлен в этом файле.