如何通过参数加载环境?

时间:2018-01-17 22:00:28

标签: java spring spring-boot

我不知道如何将参数传递给PropertySource注释,所以我在SpringBootApplication中有以下代码,这段代码通过参数加载属性文件的方向。

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
public class ProjectApplication extends WebMvcConfigurerAdapter implements ApplicationRunner {

    public static String PROPERTIES = null;

    Logger logger = LoggerFactory.getLogger(ProjectApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(ProjectApplication.class, args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        logger.info("Application started with command-line arguments: {}", Arrays.toString(args.getSourceArgs()));
        logger.info("NonOptionArgs: {}", args.getNonOptionArgs().get(0));
        String prueba = args.getNonOptionArgs().get(0);
        String[] parts = prueba.split("=");
        String part2 = parts[1];
        if (OSHelp.isLinux()==true) {
            PROPERTIES = OSHelp.getUserHome()+"/PROPERTIES/"+part2+".properties";
        }else{
            PROPERTIES = OSHelp.getUserHome()+"\\PROPERTIES\\"+part2+".properties";
        }

    }

我有以下Hibernate配置。

@Configuration
@EnableTransactionManagement
@PropertySource(value = "classpath:"+{ProjectApplication.PROPERTIES})
public class HibernateConfiguration {
}

如何调用ProjectApplication的属性?

现在我遇到以下问题

@PropertySource(value = {"C:/Users/Usuario/PROPERTIES/DESARROLLO.properties"})

我的HibernateConfiguration文件中有以下网址,并说文件创建时不存在!

我不知道它为什么会发生!

DESARROLLO = DEV

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用dev,prod等个人资料

@Configuration
@EnableTransactionManagement
@Profile("dev")
public class HibernateConfiguration {

}

或者您可以使用application-{profile}.properties进行配置,并将活动配置文件作为命令传递。