Проблема, с которой я столкнулся: активный профиль, определенный в application.properties через spring.profiles.active = development. Однако, когда я использую переменную среды Spring для getActiveProfiles (), все, что возвращается, это пустой массив String. Приложение загружается с «Следующие профили активны: разработка». Ценю любую помощь с этим. Ниже приведен простой класс, чтобы проверить, могу ли я получить профиль.
Уже пробовал автоматически подключать переменную окружения безрезультатно Этот класс помечен @Component и реализует EnvirontmentAware.
Примечание. Я рассмотрел почти каждую ветку SO относительно этой проблемы, поэтому, пожалуйста, не помечайте ее как обман, поскольку никто не решил мою проблему.
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
System.out.println(environment.getActiveProfiles()[0]);
}
И, конечно же, мы получаем исключение индекса из границ.
application.properties (некоторые опущены из-за конфиденциальной информации)
spring.profiles.active=development
Основной класс:
@SpringBootApplication
@PropertySource("classpath:application.properties")
@ComponentScan("uk.co.demo*")
@Configuration
public class EbecsIntegrationAdapterApplication {
@Value("${activemq.broker_url}") private String amqBrokerUrl;
@Value("${activemq.username}") private String amqUsername;
@Value("${activemq.password}") private String amqPassword;
@Value("${server.ssl.key-store}") private String amqKeystore;
@Value("${server.ssl.key-store-password}") private String
amqKeyStorePassword;
@Bean
public ConnectionFactory activemqConnectionFactory() throws Exception {
ActiveMQSslConnectionFactory connectionFactory = new
ActiveMQSslConnectionFactory();
connectionFactory.setBrokerURL(this.amqBrokerUrl + "?
jms.prefetchPolicy.all=1");
connectionFactory.setUserName(this.amqUsername);
connectionFactory.setPassword(this.amqPassword);
connectionFactory.setTrustAllPackages(true);
connectionFactory.setTrustStore(this.amqKeystore);
connectionFactory.setTrustStorePassword(this.amqKeyStorePassword);
connectionFactory.setKeyStore(this.amqKeystore);
connectionFactory.setKeyStorePassword(this.amqKeyStorePassword);
return new PooledConnectionFactory(connectionFactory);
}
@Bean
public ActiveMQComponent activemqComponent(JmsTransactionManager
jmsTransactionManager, ConnectionFactory connectionFactory) {
ActiveMQComponent activeMQComponent = new ActiveMQComponent();
activeMQComponent.setTestConnectionOnStartup(true);
activeMQComponent.setTransacted(true);
activeMQComponent.setCacheLevelName("CACHE_CONSUMER");
activeMQComponent.setConnectionFactory(connectionFactory);
activeMQComponent.setTransactionManager(jmsTransactionManager);
return activeMQComponent;
}
@Bean
public JmsTransactionManager jmsTransactionManager(ConnectionFactory connectionFactory) {
return new JmsTransactionManager(connectionFactory);
}
@Bean
public SpringTransactionPolicy springTransactionPolicy(TransactionTemplate transactionManager) {
return new SpringTransactionPolicy(transactionManager);
}
public static void main(String[] args) {
SpringApplication.run(EbecsIntegrationAdapterApplication.class, args);
TestEnv testEnv = new TestEnv();
testEnv.printEnvs();
}
TestEnv Класс:
@Component
public class TestEnv implements EnvironmentAware {
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
public void printEnvs() {
System.out.println(environment.getActiveProfiles()[0]);
}
}