如何用Spring 3.1的Environment和Profile简化工作

如何用Spring 3.1的Environment和Profile简化工作,第1张

Spring 三依问题提供解决案(没自项目升级Spring版本嗯麻烦) Spring容器引入EnvironmentProfile概念每应用程序文都都访Environment象 ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(); ConfigurableEnvironment configurableEnvironment = classPathXmlApplicationContextgetEnvironment(); 每种运行环境都Profile类供使用数讲解Spring Profile例都发模式或产模式于同运行环境问题说我解决案使用使用Profile适应同运行解决案优势自行决定何使用Profile 默认星空情况所创建Bean载入容器没Profile象面看例假设面我应用程序数据源实例定义 Spring 三0增加新容器类GenericXmlApplicationContext 作ClassPathXmlApplicationContextFileSystemXmlApplicationContext外另选择 GenericXmlApplicationContext类特点通Setter完所配置需依靠笨重构造器完配置记住初始化容器准备工作完需要调用refresh()完实际初始化工作 面代码展示何使用GenericXmlApplicationContext类初始化容器: GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctxgetEnvironment()setActiveProfiles("standalone"); ctxload("Contextxml"); ctxrefresh(); 我Profile设置standalone工程我希望代码既作standalone运行应用程序容器外作container运行容器我设置Profile例面代码设置Profilestandalone与activemq 依 ctxgetEnvironment()setActiveProfiles("standalone", "activemq"); 虽做面配置实际并前配置文产影响没配置Profile实例所修改配置文: Profile设置standalone才实例化BeanProfileBean属性实例象配置单独Bean选择Profile较早Spring版本导致产文件Ant通配符运行找确配置文件 Spring 三依标签嵌套标签内现我重新编写数据源配置文件: 通面代码快速切换Profile: ctxgetEnvironment()setActiveProfiles("container"); 另种切换Profile运行作系统参数传入: -Dspringprofilesactive="standalone" 外作Ear/War初始化参数传入: dispatcher orgspringframeworkwebservletDispatcherServlet springprofilesactive production </servlet

在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”声明的默认属性

profile:需要运行的运动包络号。

例如你设了两个包络,0号包络位移为10CM,1号包络位移为20CM。如果你想让电机先走10CM,再走20CM,那么在PTO—RUN子程序中profile参数中填0,下一个运行子程序中填1你想运行那个包络就填那个包络号。

所有的参数都在向导子程序中有中文或英文的参数说明。

一般在用户的文件夹下面有个appdata目录,这个目录是隐藏的,有在各种程序里的自定义设置。

appdata下有三个子文件夹local,locallow,loaming。当解压缩包时如果不指定路径,系统就把压缩包解到local\temp文件夹下,存放了一些解压文件,

安装软件时就从这里调取数据特别是一些制图软件,体积非常大,占用很多空间。而locallow是用来存放共享数据。

roaming文件夹也是存放一些使用程序后产生的数据文件。它包含了一些系统程序运行时需要的文件。所以应该去这些目录下找到,应该是local目录下的。

那是占硬盘空间

不是内存

至于东西,

除了一个 你雷友用户名的文件夹

history6dat(下载记录)

history6datrescue(下载记录备份)

UserConfigini(程序配置)

其他都可以删除(这些东西也是可以删除,你关闭迅雷后再开启会自动建立,不过你的配置和下载历史就会丢失~~)

以上就是关于如何用Spring 3.1的Environment和Profile简化工作全部的内容,包括:如何用Spring 3.1的Environment和Profile简化工作、mac下idea设置spring.profiles.active问题、西门子plc s7-200运动控制程序profile是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9581978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存