Propriedades de inicialização da mola a serem carregadas na inicialização e respeitam todos e controlam @Aspect com base no valor do arquivo de propriedades

Estamos carregando propriedades de um arquivo externo usando@PropertySources. Agora eu quero ativar / desativar@Aspect com base em uma propriedade. Eu tentei usar@ConditionalOnExpression que não funcionou. Tentei o mesmo criando um bean depropertyplaceholderconfig. Mesmo no mesmo caso, não funcionou. Então eu tentei@profile que também não funcionou inicialment

O que eu descobri é que essas variáveis não são inicializadas no início quandopropertysource oupropertyplaceholder bean é usado na inicialização. Algumas variáveis são sempre ignoradas como (logging.file). Mas@Value funciona bem. Para definir essas variáveis, preciso transmiti-las como parâmetros da JV

Então minhas perguntas são:
1. Como posso fazer com que o spring sempre leia os arquivos de propriedades especificados na inicialização e respeite todos ele
2. Qual é a melhor maneira de ativar / desativar@Aspect. Usando@profile ou@ConditionalOnExpression ou alguma outra coisa

Atualmente, estamos definindologging.file no método principal, pois isso também se comporta da mesma maneira. Mas vocês sabem que não é o caminho certo, pois eu posso acabar adicionando as propriedades uma por uma assim. Quero colocar todas as propriedades em arquivos externos, para que o Spring leia esses arquivos e defina suas propriedade

Nossa estrutura de propriedades:

common.properties #Isso tem todas as propriedades comuns service.properties # Propriedade específica de um serviço. Isso também conterá a propriedade existente de common.properties que será substituída.

Entendo que posso usar perfis. Porém, queremos manter as propriedades fora, para que você precise reiniciar o serviço se estiver alterando as propriedades. Também não quero passar as variáveis como parâmetros da JVM, então tenho que passar a maioria das variáveis dessa maneira. Passar -Dspring.config.location também é difícil, poiscommon.properties eservice.properties são usados e o nome do arquivo 'service.properties' varia para cada serviç

códigos de amostra:

Mainclass:

@PropertySources({
        @PropertySource(value = "file:${property_path}/common.properties", ignoreResourceNotFound = false),
        @PropertySource(value = "file:${property_path}/service1.properties", ignoreResourceNotFound = true) })
public class MainClass {
static String logDirectory = ApplicationContext.getGlobalProperty("logging.file");

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(MainClass.class);

        Properties properties = new Properties();
        properties.put("logging.file", logDirectory);
    ,    springApplication.setDefaultProperties(properties);
        springApplication.run(args);
    }
}

Contexto do aplicativo:

@Configuration
@EnableAutoConfiguration
public class ApplicationContext implements EnvironmentAware {

    private static Environment environment;

    @Override
    public void setEnvironment(Environment environment) {
        ApplicationContext.environment = environment;
    }
    public static String getGlobalProperty(String propertyName) {
    return environment.getProperty(propertyName);
    }
}

Aqui você pode ver como eu useienvironment para obterproperty. Existe alguma maneira de definir a propriedade usando o ambiente, de modo que, enquanto a própria inicialização de inicialização por primavera, as propriedades são preenchidas?

Nós também podemos implementarApplicationContextInitializer e substituirinitialize método para ler propriedades. Mas como posso ler dois arquivos de propriedades e substituir a propriedade duplicada pelo valor mais recente?Reference (não sei como implementar meus requisitos dessa maneira.). Mesmo neste caso, não parece que você está tentando matar um mosquito com um martelo?

olução de trabalho atual:

@Aspect
@Profile("!production")
@Configuration
public class ControllerAspect {
@pointcut(....)
} //Here also I've to pass spring.profiles.active as JVM params.
//setting the value in common.properties or service1.properties is not working. 

Eu sou um novato na bota de primavera, por favor me avise para esclarecimentos adicionai

questionAnswers(1)

yourAnswerToTheQuestion