开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
1、多环境配置文件
平时开发分开发环境、测试环境、生产环境,不同的环境使用不同的配置文件,如何来做呢?
创建如下四个配置文件:
application.properties
application-dev.properties ------ 开发环境配置文件
application-test.properties ------ 测试环境配置文件
application-prod.properties ------ 生产环境配置文件
在启动Spring Boot的时候会默认读取application.properties配置文件,这样我们在该文件中配置启用哪个配置文件即可
spring.profiles.active=dev
同样我们也可以在启动的时候指定使用哪个配置文件
java xxx.jar -Xms256m -Xmx512m -Dspring.profiles.active=prod
2、静态资源
Spring Boot中静态资源等应该放在什么位置?
Spring Boot能大大简化WEB应用开发的原因,最重要的就是遵循“约定优于配置”这一原则。Spring Boot关于静态资源的默认配置已经完全满足绝大部分WEB应用的需求。没有必要去自定义了,使用Spring Boot约定的就好了。
在Maven工程上目录下,所有静态资源都放在src/main/resource目录下,结构如下:
src/main/resource
----static
----|----js
----|----images
----|----css
3、自定义静态资源
当然我们也可以自定义静态资源的位置,有两种方式来配置,一种是通过配置文件来配置,一种是通过代码来配置。
1、通过配置文件来配置,application.properties
# 静态文件请求匹配方式
spring.mvc.static-path-pattern=/**
# 修改默认的静态寻址资源目录 多个使用逗号分隔
spring.resources.static-locations = classpath:/templates/,classpath:/resources/,classpath:/static/
2、通过代码来配置
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.itstyle.modules" })
public class Application extends WebMvcConfigurerAdapter {
private static final Logger logger = Logger.getLogger(Application.class);
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/cert/**").addResourceLocations("classpath:/cert/");
super.addResourceHandlers(registry);
logger.info("自定义静态资源目录");
}
public static void main(String[] args) throws InterruptedException, IOException {
SpringApplication.run(Application.class, args);
logger.info("支付项目启动 ");
}
}
4、读取文件
我们通常会将一些导入文件的模板、证书之类的文件放到类目录下,我们可以通过下面的方式来读取
// 获取文件
File file = ResourceUtils.getFile("classpath:cert/readme.txt");
// 获取路径
ClassUtils.getDefaultClassLoader().getResource("cert").getPath();
5、部署到JavaEE容器
Spring Boot默认嵌入了tomcat,有时我们想部署到tomcat启动,修改如下3个地方:
1、修改启动类,继承SpringBootServletInitializer,并重写configure
public class Application extends SpringBootServletInitializer{
private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
2、修改pom文件将打包方式由jar改为war
<!-- <packaging>jar</packaging> -->
<packaging>war</packaging>
3、修改pom,排除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>
6、指定外部配置文件
有些系统,关于一些数据库或其他第三方账户等信息,由于安全问题,其配置并不会提前配置在项目中暴露给开发人员。对于这种情况,我们在运行程序的时候,可以通过参数指定一个外部配置文件。
java -jar xxx.jar --spring.config.location=/opt/config/application.properties
7、创建启动关闭脚本
我们通常会将springboot部署到linux下,可以创建启动关闭脚本,方便管理项目
1、启动脚本 start.sh
#!/bin/sh
nohup java -jar $1 --server.port=$2 --spring.profiles.active=prod &
echo 'Start Success!'
说明:
- 执行方式:start.sh xxx.jar 8081
- 2分别传入的参数为xxx.jar和8081
2、关闭脚本 stop.sh
#!/bin/sh
tpid=`ps -ef|grep $1|grep -v grep|grep -v kill|awk '{print $2}'`
if [ "${tpid}" ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 3
tpid=`ps -ef|grep $1|grep -v grep|grep -v kill|awk '{print $2}'`
if [ "${tpid}" ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi