⭐️作者简介:一个力求全干的Java后端开发者。
💗个人主页:CVcode码农的博客
👉当前专栏:SpringBoot整合篇
✔️本文内容:SpringBoot整合篇第一篇,基本配置和运行SpringBoot项目
其他内容查看👇
手写简易版SpringMVC(避免死记硬背八股文)
本人能力有限,如有遗漏或错误,敬请指正,谢谢
文章目录
1.pom文件引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{自己选版本}</version>
</parent>
<!--web项目需要依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.创建主程序
/**
* 主程序类
* @SpringBootApplication:这是一个SpringBoot应用
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
测试接口:经典HelloWorld
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle(){
return "Hello, Spring Boot 2.x!";
}
}
3.打包部署、运行
运行:idea右上角
打包部署:打包成jar,直接在服务器执行即可
添加了spring-boot-maven-plugin插件后,当运行maven打包的命令,项目会被打包成一个可以直接运行的jar
包,使用"java -jar (jar包名)"可以直接运行
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4.web项目配置文件
默认配置文件为application.properties或者application.yml
4.1如何根据业务需要修改默认配置文件名并使之生效
修改Environment variables 选项参数为
spring.config.name=XXX
或
--spring.config.name=XXX
修改之后SpringBoot会默认从四个位置搜索对于文件名的配置文件,并按照对应的优先级生效
1. 项目根目录下的config目录中
2. 项目根目录下
3. classpath下的config目录中
4. classpath目录下
四个位置中的application.yaml文件的优先级按照上面列出的顺序依次降低。即如果有同一个属性在四个文件中都出现了,以优先级高的为准
5.项目多套环境配置
在项目中配置多套环境的配置方法:
因为现在一个项目有好多环境,开发环境,测试环境,生产环境,每个环境的参数不同,所以我们就可以把每个环境的参数配置到yml文件中,这样在想用哪个环境的时候只需要在主配置文件中将用的配置文件写上就行
举例如下图:
笔记:在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如:
application-dev.yml:开发环境
application-test.yml:测试环境
application-prod.yml:生产环境
至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值
6.手动获取容器
主程序的返回值就是容器
ConfigurableApplicationContext ioc= SpringApplication.run(MainApplication.class, args);
7.ComnandLineRunner 接口和ApplcationRunner接口
这两个接口都 有一个run方法。 执行时间在容器对象创建好后, 自动执行run()方法。
可以完成在容器对象创建好的一些操作。(读取之类的操作)
下面以CommandLineRunner举例:
CommandLineRunner是一个接口,我们需要时,只需实现该接口就行。如果存在多个加载的数据,我们也可以使用@Order(越小越先执行)注解来排序。
@Component
@Order(value = 2)
public class MyStartupRunner1 implements CommandLineRunner{
@Override
public void run(String... strings) throws Exception {
System.out.println("服务启动执行,执行加载数据等操作 MyStartupRunner1 order 2"}
}
@Component
@Order(value = 1)
public class MyStartupRunner2 implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
System.out.println("服务启动执行,执行加载数据等操作 MyStartupRunner2 order 1");
}
}
结果输出:
服务启动执行,执行加载数据等操作 MyStartupRunner2 order 1
服务启动执行,执行加载数据等操作 MyStartupRunner1 order 2