第一个SpringBoot程序
-
第一个SpringBoot程序
- 1. 创建方法
- 2. 第一个程序
-
3. 修改port和banner
-
4. 原理初探
-
1. 自动配置
- 1. pom.xml
- 2. 启动器
- 3. 主程序
- 4. 原理图
- 5. @ConditionalOnXXX
- 6. 结论
-
2. Spring主程序启动
- 1. SpringApplication类
- 2. run方法
- 3. SpringBoot的理解
1. 创建方法
2. 第一个程序
package com.wang.helloWorld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//本身就是Spring的一个组件!
//程序的主入口
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
//SpringApplication
SpringApplication.run(HelloWorldApplication.class,args);
}
}
controller
package com.wang.helloWorld.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//自动装配
@RestController
public class HelloController {
//接口: http://localhost:8080/hello
@RequestMapping("/hello")
public String Hello() {
//调用业务,接收前端的参数
return "Hello,World!";
}
}
注意
- 代码要在和application同级的目录下建文件夹,否则会无法生效!
3. 修改port和banner
1. 修改port
在resource目录下的application.properties文件中
#更改项目的端口号
server.port=8081
2. 修改banner
在resource的目录下新建banner.txt,放入直接喜欢的banner即可!
4. 原理初探
1. 自动配置
1. pom.xml
-
spring-boot-dependencies: 核心依赖在父工程中
-
我们在写或引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库!
2. 启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
- 启动器就是springboot的启动场景
- 比如spring-boot-starter-web,会帮我们自动导入web的所有依赖
- springboot会将所有的功能场景,变成一个个的启动器
- 我们要使用什么功能,就只需要找到对应的启动器即可
3. 主程序
package com.wang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication : 标注这个类是一个springboot的应用,启动类下的所有配置导入
@SpringBootApplication
public class Springboot01HelloworldApplication {
public static void main(String[] args) {
//将springboot应用启动
SpringApplication.run(Springboot01HelloworldApplication.class,args);
}
}
注解
META-INF/spring.factories : 自动配置的核心文件
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
所有的资源加载到配置类中
4. 原理图
5. @ConditionalOnXXX
-
核心注解,这个注解是自动配置没有全部生效而需要导入对应的start才生效的原因!
-
@ConditionalOnXXX(XXX,XXX,...) 括号中的条件都满足这个类才生效
-
XXX: Class,Property,...
6. 结论
SpringBoot所有的自动配置都在启动类中扫描并加载
扫描了spring.factories,所有的自动配置类都在这里面,但不一定生效
要看判断条件是否成立(@ConditionalOnXXX),只要导入了对应的starter(pom),就有对应的启动器了
有了启动器,我们自动配置就会生效,然后就配置成功了
步骤:
- SpringBoot在启动的时候,从类路径/META-INF/spring.factories 获取了指定的值
- 将这些自动配置的类导入容器,自动配置类就会生效,帮我们自动配置
- 以前我们需要手动配置的东西,现在SpringBoot帮我们做了
- 整合JavaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-版本号.RELEASE .jar这个包下
- 它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
- 容器中也会存在非常多的XXXAutoConfiguration的文件,就是这些类会给容器中导入这个场景需要的所有组件,并自动配置@Configuration (JavaConfig!)
- 有了自动配置类,免去了我们手动配置类的麻烦
2. Spring主程序启动
1. SpringApplication类
这个类主要做了四件事情
-
推断应用的类型是普通的项目还是Web项目(Web项目会一直运行)
-
查找并加载所有可用初始化器 , 设置到initializers属性中
-
找出所有的应用程序监听器,设置到listeners属性中
-
推断并设置main方法的定义类,找到运行的主类
- SpringApplication.run(主类.class,args);
2. run方法
核心是利用Java来配置 JavaConfig
其中的核心是@Configuration和@Bean
3. SpringBoot的理解
- 自动装配
- run方法
- 判断是否为web项目
- 找到运行的主类
- 监听器
- 主要还是SpringApplication类做的四件事
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|