Como carregar arquivos de propriedade fora do arquivo de guerra ao usar boot loader primavera WarLauncher?

votos
3

Eu criei um arquivo de guerra executável especificando WarLauncher (parte do carregador de boot primavera) como a minha arranque de classe. Ele funciona muito bem quando todos os arquivos de configuração (propriedades, contexto primavera, etc) fazem parte da pasta o meu recursos. Espero consumidor de minha guerra exigindo controle sobre o arquivo de propriedade. Por isso, é necessário para ser carregado fora do arquivo de guerra. Estou esperando o arquivo de propriedades em uma pasta config (implantado lado a lado com o arquivo de guerra). Tentei adicionar entradas de classpath apropriadas para o manifesto, fazendo uso de plug-in Maven mas não funcionou.

O seguinte é como seção relevante do meu arquivo POM maven se parece com:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.3</version>
   <configuration>
      <archive>
         <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>org.springframework.boot.loader.WarLauncher</mainClass>
         </manifest>
         <manifestEntries>
            <Start-Class><<myclass_dont_worry_about_this>></Start-Class>
            <Class-Path>config/</Class-Path>
         </manifestEntries>
      </archive>
      <failOnMissingWebXml>false</failOnMissingWebXml>
   </configuration>
</plugin>

Eu estou usando Spring ClassPathResource () para carregar o arquivo de propriedade. O seguinte mostra o trecho de código para o mesmo:

 InputStream stream = new ClassPathResource(classPathConfigFilePath).getInputStream();
 Proerties properties = new Properties();
 properties.load(stream);

Em tempo de execução, não é capaz de localizar o arquivo de propriedade resultando em FileNotFoundException.

Obrigado.

Publicado 06/12/2013 em 08:14
fonte usuário
Em outras línguas...                            


1 respostas

votos
5

Primavera-Boot por padrão pesquisa os seguintes locais para um application.propertiesarquivo

  1. raiz classpath
  2. diretório atual
  3. classpath /configpacote
  4. /config subdiretório do diretório atual

Todos esses ficheiros, quando disponíveis são carregados, por esta ordem, o que significa propriedades de um pode ser substituído por 2,3,4. Todas as propriedades carregados estão disponíveis como parte da Environmente, como tal, pode ser utilizado em espaços reservados para configuração.

Como um complemento para as regras de carga acima referidas, também em seu perfil arquivos específicos podem ser carregados. Para um determinado perfil que também irá tentar carregar um application-{profile}.properties. Para esse arquivo específico as regras de carregamento como mencionado acima também são levados em conta.

Todas as propriedades carregados estão disponíveis através do Environmentque significa que, estão disponíveis através de molas de gestão de propriedades unificado . Pode-se usar o Environmentdiretamente para recuperar parâmetros de configuração ou usar espaços reservados com a @Valueanotação para a configuração

@Configuration
public class SomeConfigClass {
    @Autowired
    private Environment env;

    public DataSource dataSource() {
        SimpleDriverDataSource ds = new SimpleDriverDataSource();
        ds.setUsername(env.getProperty("jdbc.username"));
        ds.setPassword(env.getProperty("jdbc.password"));
        ds.setDriverClass(Driver.class);
        ds.setUrl(env.getProperty("jdbc.url"));
        return ds;
    }
}

Ou com @Value

 @Configuration
public class SomeConfigClass {

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Value("${jdbc.url}")
    private String url


    public DataSource dataSource() {
        SimpleDriverDataSource ds = new SimpleDriverDataSource();
        ds.setUsername(username);
        ds.setPassword(password);
        ds.setDriverClass(Driver.class);
        ds.setUrl(url);
        return ds;
    }
}

ligações

  1. Inicialização Primavera LEIA-ME
  2. Spring Framework Perfil documentação
  3. Primavera propriedade gerenciada blogue
  4. Primavera Boot Loader LEIA-ME
Respondeu 06/12/2013 em 09:14
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more