2017-05-18 2 views
0

lorsque j'utilise la commandeau sujet du printemps Profil de démarrage ne peut pas travailler

printemps-boot mvn: run = -Dspring.profiles.active web

mon projet est en cours d'exécution, mais @Profile("web") code haricots non utilisé, qui utilisent uniquement propriétés que le écriture de haricot par

@Profile("default") 

comment puis-je changer pour cela, et les propriétés changent de profil web?

@Profile("default") 
@Bean 
static public PropertySourcesPlaceholderConfigurer defaultPropertySourcesPlaceholderConfigurer() { 
    PropertySourcesPlaceholderConfigurer p = new PropertySourcesPlaceholderConfigurer(); 
    Resource[] resourceLocations = new Resource[] { new ClassPathResource("job.core.properties") }; 
    p.setLocations(resourceLocations); 
    return p; 
} 

@Profile("web") 
@Bean 
static public PropertySourcesPlaceholderConfigurer prodWebPropertySourcesPlaceholderConfigurer() { 
    PropertySourcesPlaceholderConfigurer p = new PropertySourcesPlaceholderConfigurer(); 
    Resource[] resourceLocations = new Resource[] {new ClassPathResource("job.core.ris.properties") }; 
    p.setLocations(resourceLocations); 
    return p; 
} 

job.core.ris.properties

db.driverClass=com.mysql.jdbc.Driver 
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/job_ris?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8 
db.user=root 
db.password= 

job.core.properties

db.driverClass=com.mysql.jdbc.Driver 
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/dev?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8 

lorsque j'utilise l'action puis, montrer ce enter image description here

+0

Pourquoi les méthodes annotées '@ Bean' sont-elles statiques? Essayez d'enlever le 'static' – StanislavL

+0

si enlever statique le jdbcUrl sera nul –

Répondre

0

Travailler avec le cadre pas contre/autour de lui. Spring Boot a build in support pour charger des fichiers spécifiques au profil application.properties. Au lieu d'essayer de chausse plusieurs PropertyPlaceholderConfigurer dans une application Spring Boot. Créez un application.properties et application-web.properties contenant vos propriétés.

application.properties

db.driverClass=com.mysql.jdbc.Driver 
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/dev?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8 

application-web.properties

db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/job_ris?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8 
db.user=root 
db.password= 

(remarquez que le db.driverClass vous ne devez manquer inclure les différentes propriétés).

Ensuite, retirez vos méthodes d'annotation personnalisées @Bean et laissez Spring Boot faire le gros du travail.

Astuce Pro: A en juger par les noms des propriétés que vous aussi avez une coutume @Bean pour votre DataSource. Au lieu d'utiliser des noms personnalisés, vous souhaitez probablement utiliser les propriétés spring.datasource.* et laisser Spring Boot créer/gérer votre source de données.

+0

ok, j'utilise cette méthode avant, cela sera fait. Merci toujours. –