
在springboot项目中,通过idea在配置springprofilesactive
(1)在windows下点击idea的启动,可以通过SystemgetProperty("springprofilesactive")获取到dev值
(2)在mac下点击idea的启动,同样的配置,但通过SystemgetProperty("springprofilesactive")时获取到的值是null;
对比:
(1)在windows启动时,控制台输出:
参数设置被直接以-Dspringprofilesactive=dev追加到了 java命令之后,是以虚拟机参数进行设置
(2)在mac启动时,控制台输出:
参数设置被直接以--springprofilesactive=dev追加到了 启动类命令之后
在命令运行时,连续两个减号 --就是对applicationproperties中属性值进行赋值的标志。
那么在mac下可以通过设置VM options来达到windows相同的效果
这时,命令窗会出现:
但是这样的话就会出现多个springprofilesactive(-Dspringprofilesactive=dev和最末尾--springprofilesactive=dev);那么两个值最终取的是哪个呢? 按照springboot配置加载优先级来看,最终程序中使用优先级更高的--springprofilesactive;
需要注意:-Dspringprofilesactive=dev是将值设置到了虚拟机中,通过SystemgetProperty("springprofilesactive")可以获取到dev;但是使用--springprofilesactive=dev使用SystemgetProperty("springprofilesactive")是获取不到的。
Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下:
1命令行参数。
2通过 SystemgetProperties() 获取的 Java 系统参数。
3 *** 作系统环境变量。
4从 java:comp/env 得到的 JNDI 属性。
5通过 RandomValuePropertySource 生成的“random”属性。
6应用 Jar 文件之外的属性文件。(通过springconfiglocation参数)
7应用 Jar 文件内部的属性文件。
8在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。
9通过“SpringApplicationsetDefaultProperties”声明的默认属性
Windows系统启动taro小程序时,有时会遇到下面的报错,提示“REACT_APP_ENV不是内部命令”。
参考链接: >
在applicationyml或者properties文件中添加:
infoaddress=USA
infocompany=Spring
infodegree=high
激活 @ConfigurationProperties
我们可以通过下面几种方式将其添加到应用上下文中
首先,我们可以通过添加 @Component 注解让 Component Scan 扫描到
资源目录下建立config/db-configproperties:
dbusername=root
dbpassword=123456
@Autowired
private Environment env;
// 获取参数
String getProperty(String key);
@conditionalonproperty(name = "XXX",havingValue = "true")
参考文献
官网总是写的那么含蓄,默认我们不是萌新。
>
配置数据库配置文件的方法: 1首先先创建一个dbproperties的配置文件。在配置文件中输入配置信息如下: driver=commicrosoftsqlserverjdbcSQLServerDriver url=jdbc:sqlserver://localhost:1433;DatabaseName=books user=sa password=sa 2创建一个加载dbproperties的文件Envjava。在java文件中加载配置信息如下: public class Evn extends Properties{ private static Evn instance; private Evn(){ //通过构造方法读取配置文件 InputStream is=getClass()getResourceAsStream("/dbproperties"); try { load(is); } catch (IOException e) { // TODO Auto-generated catch block eprintStackTrace(); } } public static Evn getInstance(){ //单例模式创建、获得对象实例。if(instance==null){ makeInstance(); } return instance; } public static synchronized void makeInstance() { if(instance==null){ instance=new Evn(); } } } 3读取数据方法 public class Test { public static void main(String[] args){ String driver=EnvgetInstance()getProperty("driver"); String url=EnvgetInstance()getProperty("url"); String user=EnvgetInstance()getProperty("user"); String password=EnvgetInstance()getProperty("password"); Systemoutprintln(driver); Systemoutprintln(url); Systemoutprintln(user); Systemoutprintln(password); } }
复制envexample到env
我记得应该是没有env的。env是环境文件,在做开发的时候,格式都会备份一个到envexample文件,所以,你复制完,根据自己的环境做一些更改就好了
没有重新加载环境变量等原因。
1、没有重新加载环境变量,修改env文件后,需要重新加载环境变量才能使更改生效,可尝试在终端中运行以下命令:source,env。
2、环境配置有误,env文件定义的环境变量是由系统加载的,对于一些特殊的编辑器或者IDE,配置方式不同,需要设置环境变量的方式也不同,如果环境配置有误也可能导致快捷键不生效。
以上就是关于mac下idea设置spring.profiles.active问题全部的内容,包括:mac下idea设置spring.profiles.active问题、REACT_APP_ENV不是内部命令问题解决办法、Spring Boot读取配置的几种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)