2015-07-25 2 views
0

Я действительно новичок в Spring и Maven, и я хотел создать среду, специфичную для среды. Основная идея состояла в том, чтобы создавать профили в maven, а в профиле заданы некоторые переменные, чтобы помочь загрузить правильный файл свойств.Не удалось разрешить placeholder

Вот один мой профиль в мавена:

<profile> 
    <id>dev</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
     <env>dev</env> 
    </properties> 
</profile> 

А вот мой FTPProperties класс:

@Configuration 
@PropertySource("classpath:/properties/ftp-${env}.properties") 
public class FTPProperties { 

    @Autowired 
    private Environment environment; 

    private String server; 

    public FTPProperties() { 
    } 

    @PostConstruct 
    private void init(){ 
     this.server = environment.getProperty("ftp.server"); 
    } 

    public String getServer() { 
     return server; 
    } 
} 

Когда я пытаюсь построить его, я получаю следующее исключение:

java.lang.IllegalArgumentException: Could not resolve placeholder 'env' in string value "classpath:/properties/ftp-${env}.properties" 

Любая помощь с благодарностью.

ответ

1

Я нашел решение:

Deleted класс FTPProperties и переехал в конфигурацию applicationContext.xml так:

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> 
    <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    <property name="locations"> 
     <list> 
      <value>classpath:/properties/ftp-${env}.properties</value> 
     </list> 
    </property> 
</bean> 

И я только что обновил мои Maven профили:

<profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <env>dev</env> 
     </properties> 
     <build> 
      <resources> 
       <resource> 
        <directory>src/main/resources</directory> 
        <filtering>true</filtering> 
       </resource> 
      </resources> 
     </build> 
    </profile> 

После этого я создал класс FTPService:

@Service 
public class FTPService { 

@Value("${ftp.server}") 
private String server; 

public String getServer() { 
    return server; 
} 
} 

Все работает отлично, как и предполагалось.

Смежные вопросы