首页 > 编程知识 正文

spring aop详解,spring的事务

时间:2023-05-03 22:36:06 阅读:108924 作者:491

[版权声明]非商业目的注明出处可以自由转载

资料来源: shusheng007

这篇文章的目录概述了如何使用配置文件代码设置配置文件、如何使用启动参数APP、如何使用配置文件使用maven配置文件以及如何获取有效配置文件

概要

当你刚接触SpringBoot的时候,是否有点不熟悉它提供的Profile,摸索之后才恍然大悟。 今天我要做一点关于Profile的总结,作为互联网的记忆保留。

什么是配置文件? Profile翻译成中文就是个人资料、文件…。 例如,王二狗和yydxmt两个人都有自己的个人资料

xydj的配置文件:

姓名: yydxmt性别:女人爱好:购物王二狗Profile:

姓名:王二狗性别:男趣:编程,看gddfbx对应Spring也一样。 在实际开发中,dev、uat、prod等多个环境同时存在。 这些环境共享一个代码逻辑,但需要不同的配置。 例如,dev环境必须连接到测试数据库,而prod必须连接到生产数据库。

如前所述,profile的主要目的是区分不同的环境,并允许配置更多不同的环境。 那么怎么使用呢,在SpringBoot中有两种用法。

配置文件SpringBoot应用application.properties/application.YAML配置文件的命名规则,并根据当前活动的配置文件加载相应的配置文件。

application-{您的配置文件}.properties/application-{您的配置文件}.YAML下有当前的demo项目结构,资源文件夹下有三个配置文件

((src((main () ) ) (Java () ) (resources ((application-dev.ya application

server :端口:8081 application-prod.YAML

server : port :8082 application.YAML

#如果空白profile为default,则只使用application.yaml,SpringBoot的默认服务器端口为8080。 如果将当前profile作为dev激活,SpringBoot将额外加载application-dev.yaml并合并到application.yaml中,以复盖相同的配置(如果存在)。

以下是未激活profile时项目启动时的输出,其中profile为default,server port为8080

2021-09-222233605336031.505 info 78078---[ restarted main ] t.s.springprofilesapplication : noactiveprofilesession fallingbacktodefaultprofiles : default . 2021-09-2222222336050 main ] o.s.b.w.embedded.Tomcat.Tomcat web server : tomcatinitializedwithport (s ) :8080 ) http )代码配置用于配置文件

假设你有一个接口

publicinterfacespeaker { string speak (; }虽然需要在不同的环境中使用不同的bean,但在dev环境中使用的bean如下所示

@service@profile(value={'dev ',' default ' } publicclassdevspeakerimplementsspeaker { @ overridepublicstringspeak } )

@service@profile(prod ) ) publicclassprodspeakerimplementsspeaker (@ overridepublicstringspeak ) ) return ) Iamprodspeaker

在使用的地方直接注入接口的实例即可

@ restcontrollerpublicclassspeakercontroller { privatefinalspeakersp }

eaker; public SpeakerController(Speaker speaker) { this.speaker = speaker; } @RequestMapping(method = RequestMethod.GET,path = "/speak") public String speaking(){ return speaker.speak(); }} 如何激活

上面讲的都是如何使用,但是我们如何将我们当前的profile切换到dev/prod等profile呢?SpringBoot支持非常多种方式,我们简单介绍几种简单而常用的方式。

使用启动参数

我们可以在SpringBoot项目启动时传入参数,这种参数分3种,这里使用任意一种就可以。

如果我们使用Intellij IDEA的话,可以点击Edit Configuration,然后打开Configurations配置框,在下面蓝色框中,任意选择一个填入即可。

使用application配置文件

可以将profile配置到项目的application 文件中

spring: profiles: active: dev 使用maven的profile

maven本身也支持profile,用来控制编译打包等流程。SpringBoot的application文件可以读取pom.xml中定义的profile,从而激活相应的profile。

在pom.xml 文件中添加profiles <project ...> ... <profiles> <profile> <id>dev</id> <properties> <evn>dev</evn> </properties> </profile> <profile> <id>prod</id> <properties> <evn>prod</evn> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles> ... </project>

我们建立了dev和prod两个profile,然后将prod作为默认执行的profile。添加完后刷新maven,可以看到IDE右上角maven的窗口出现了一个Profiles的条目。我们可以勾选激活哪一个profile,记得reload。

在application.yaml中读取 spring: profiles: active: @evn@

注意@evn@,其中evn是我们在pom.xml 中的profiles定义的<evn>你的profile</evn>,而前后两个@是SpringBoot 读取maven的profile的语法。

正常情况下经过以上两步就OK了,我测试的时候也只需要上面两步就成功了,但是有人反映需要添加如下配置。

<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> ...</build> 如何获取激活的Profiles

有两种方法获取当前激活的profile,通过Environment 或者@Value

@RestControllerpublic class SpeakerController { @Value("${spring.profiles.active:}") private String activeProfile; private final Environment environment; public SpeakerController(Environment environment) { this.environment = environment; } @GetMapping("/profiles") public String getCurrentProfiles(){ return String.format("通过Environment获取:%s | 通过@Value获取:%s", Arrays.toString(environment.getActiveProfiles()), activeProfile); }} 总结

暂时就说这么多吧,有什么问题留言,没有问题就点赞,睡觉去咯。。。

文章首发及源码地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。