本文主要介绍
1. 多环境配置
2. SpringBoot项目打包方式(jar & war)
1. 多环境配置
1.多环境激活
配置文件:
spring.profiles.active=dev
spring:
profiles:
active: dev
启动命令激活
java -jar xxx.jar --spring.profiles.active=dev;
2. 注解@Profile / 多资源配置文件
注解@Profile
- 1. 可使用在类或者方法上;
- 2. @profile注解所在的类,需要为 @Component 或 @Configuration 注解的类
- 3. @Profile 中需要指定一个字符串,约定生效的环境
@Configuration
@Profile("dev")
public class DataSourceDevConfig {
@Bean(destroyMethod = "")
public DataSource dataSource() throws Exception {
.......
}
}
@Configuration
public class DataSourceConfig {
@Bean("dataSource")
@Profile("dev")
public DataSource standaloneDataSource() {
......
}
@Bean("dataSource")
@Profile("prod")
public DataSource jndiDataSource() throws Exception {
......
}
}
多资源配置文件
Springboot的资源配置文件除了application.properties之外,还可以有对应的资源文件
application-{profile}.properties
例如:
application-dev.properties/application-dev.yml
application-test.properties/application-test.yml
2. SpringBoot项目打包方式(jar & war)
1. jar (默认方式)
- SpringBoot中引入Maven依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 执行 maven 的打包操作 package(注意:如果当前项目依赖了其他项目,需要通过maven先将其他项目进行maven的 install操作)
- 在项目的target包下,将生成对应jar文件
2. war
- pom文件中,将jar改成war (默认为jar)
<packaging>war</packaging>
- 添加servlet-api依赖l来打war包
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
- 排除springboot内置的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
- 增加SpringBootServletInitializer的子类,并重写其configure方法;
将main函数所在的类继承SpringBootServletInitializer,并重写configure方法
@SpringBootApplication
public class MySpringBootDemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MySpringBootDemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(MySpringBootDemoApplication.class);
}
}
- SpringBoot中引入Maven依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 执行 maven 的打包操作 package(注意:如果当前项目依赖了其他项目,需要通过maven先将其他项目进行maven的 install操作)
- 在项目的target包下,将生成对应war文件
3. jar & war 对比
jar :
- 简单方便
- 内置tomcat,没有不同环境因tomcat版本不同所存在的潜在问题;
- 不会把src/main/webapp 下的内容打到jar包里
war:
- 可以部署到tomcat的 webapps 中,随Tomcat的启动而启动
- 会把src/main/webapp 下的内容打到war包里
需要根据不同的业务场景确定是否打成jar或者war
仅仅提供rest接口, jar包方便
需要经常改动静态资源的可以打成war,静态资源直接覆盖
本文介绍SpringBoot的多环境配置方法及项目打包成jar和war文件的步骤。涵盖多环境激活、@Profile注解使用、多资源配置文件设置,以及不同打包方式的特点。
4665

被折叠的 条评论
为什么被折叠?



