springboot如何打包部署服务器(SpringBoot配置与打包基础)
本篇主要记录SpringBoot使用的基础配置
SpringBoot Maven配置
SpringBoot maven依赖关系
我们创建springboot项目后 ,会发现项目的pom文件都会继承自spring-boot-starter-parent这个配置 ,打开这个父配置文件 ,会发下它又继承自spring-boot-dependencies这个配置文件 。
spring-boot-dependencies中使用<dependencyManagement>已经引入了大量又springboot官方测试稳定的依赖包 ,因此我们在自己的springboot项目中使用这里面定义的依赖包时 ,可以不写版本信息 。
starter的含义
springboot项目引入的starter类型的依赖 ,如spring-boot-starter-web ,就是一个包含了所有web开发需要使用的依赖包的配置文件 。根据maven的依赖传递规则 ,我们不需要再手动引入各种依赖包 。这样就实现了快速的配置 。
针对springboot官方提供的各种starter ,命名方式一般是spring-boot-starter-xxx,而对于第三方提供的starter ,命名方式一般是xxx-spring-boot-starter 。
SpringBoot配置
配置写在哪
resource\application.properties是SpringBoot默认使用的配置文件 ,当然SpringBoot还支持yml,yaml这两种格式定义的配置文件 。
当同时存在这三种配置文件时 ,配置的优先级是
properties > yml > yaml
配置怎么用
使用@Value @Component public class Foo { @Value("${server.port}") private int port; @Value("${server.host}") private String host; }在使用Spring管理的Bean中 ,可以使用@Value注解修饰属性,则可以向该属性中注入数据 ,如果在@Value中使用SpEL表达式 ,则可以从配置文件中注入对应的配置 。
使用Environment @Component public class Foo { @Autorwired private Environment env; public static void main(String[] args) { System.out.pringln(env.getProperty("server.port")); } }让Spring自动注入Environment对象 ,则可以从中获取全部配置 。
将一组配置封装到一个对象中 @Component @ConfigurationProperties("datasource") @Data public class MyDatasource { private String driver; private String url; private String username; private String password; }定义这样一个Bean ,交给Spring管理 ,通过使用@ConfigurationProperties("datasource")注解 ,告诉了Spring将配置文件中datasource指定的这一组配置注入到对应的属性中。
datasource: driver: com.xxx.yyy url: jdbc:mysql://xxx:3306/test username: foo password: bar后续就可以在需要使用的地方将MyDatasource注入进来 ,就可以通过访问属性获取到配置值 。
SpringBoot引导程序
注解了@SpringBootApplication的类是SpringBoot程序启动的引导类 ,其中的main方法会运行Spring容器 ,加载引导类所在包以及子包的所有Bean 。
package com.leo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HelloSpringBootApplication { public static void main(String[] args) { SpringApplication.run(HelloSpringBootApplication.class, args); } }SpringBoot程序打包与运行
打包插件
可以使用mvn package来运行这个项目的打包程序,这个过程会从上到下依次执行package之前的所有生命周期。
如果希望打包好的jar包可以直接使用java -jar运行 ,需要在pom中配置如下的插件 。否则打包好的jar包中META-INF/MANIFEST.MF文件中会缺少Main-Class:的配置 ,导致无法使用-jar运行 。
使用了如下插件后,除了打包项目的代码 ,还会将程序依赖的所有jar包打进项目包中 ,同时还会有SpringBoot自己的类加载器等。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>临时配置
如果我们要对一个已经打好包的程序去修改运行时的配置,我们不需要修改程序的配置文件然后重新打包 ,只需要在启动程序时增加命令行参数 ,例如
java -jar fake-server.jar --server.port=8888可以将fake-server.jar启动时的端口临时设置为8888 。配置覆盖的优先级可以查看官方文档 。
配置文件分级
1级 ,jar包同层file:config/application.yml 【最高】 2级 ,jar包同层file: application.yml 3级 ,classpath: config/application.yml 4级 ,classpath: application.yml 【最低】多层级配置文件间的属性采用叠加并覆盖的形式作用于程序 。
自定义配置文件
如果不想使用默认的application.yml作为配置文件 ,可以自定义其他名字 ,例如myconfig.yml 。启动时 ,需要添加命令行参数指定该文件为配置文件 。
java -jar fake-server.jar --spring.config.name=myconfig java -jar fake-server.jar --spring.config.location=/home/xxx/myconfig.yml java -jar fake-server.jar --spring.config.location=classpath:myconfig.yml多环境配置
配置文件可以根据开发 、测试 、生产等不同的环境,定义多份 ,启动时可以选择某个环境进行启动 。可以在主配置文件中指定当前生效的配置文件的后缀 ,主配置文件中一般设置公共配置,环境配置文件中设置独立的或与公共配置有差异的配置 。
主配置文件application.yml spring: profiles: active: dev 生产环境配置application-pro.yml server: port: 80 开发环境配置application-dev.yml server: port: 81 测试环境配置application-test.yml server: port: 82我们开可以将配置文件拆分的更细 ,例如application-devDB.yml只配置数据库相关的配置 ,application-devMVC.yml只配置MVC相关的配置 。那么可以使用下面的方法将配置加载进来 。这种配置方式,配置文件的加载顺序是devDB, devMVC, dev ,所以dev中的属性会覆盖其他两个配置中的属性。
# 主配置文件application.yml spring: profiles: active: dev include:devDB, devMVC还可以使用如下方式对拆分的配置进行分组 。这样指定激活dev环境时 ,会同时加载dev分组的其他配置 。注意 ,这里加载配置的顺序是dev, devDB, devMVC。
# 主配置文件application.yml spring: profiles: active: dev group: "dev": devDB, devMVC "pro": proDB, proMVC创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!