【SpringBoot学习笔记①】SpringBoot入门
SpringBoot启动流程
1.首先从main找到run()方法,在执行run()方法之前new一个SpringApplication对象
2.进入run()方法,创建应用监听器SpringApplicationRunListeners开始监听
3.然后加载SpringBoot配置环境(ConfigurableEnvironment),然后把配置环境(Environment)加入监听对象中
4.然后加载应用上下文(ConfigurableApplicationContext),当做run方法的返回对象
5.最后创建Spring容器,refreshContext(context),实现starter自动化配置和bean的实例化等工作。
SpringBoot自动配置的原理
通过@EnableAutoConfiguration注解在类路径的META-INF/spring.factories文件中找到所有的对应配置类,然后将这些自动配置类加载到spring容器中。
SpringBoot入门
需求:浏览器发送/hello请求,相应Hello,springboot2!
1.创建maven工程
2.引入依赖
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.创建主程序
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
4.编写业务
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String handle01(){
return "Hello,spring boot2!";
}
}
5.测试
直接运行main方法
6.简化配置
创建 application.properties 文件,在该文件下编辑即可。
7.简化部署
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
把项目打成jar包,直接在目标服务器执行即可
注意点:
(1)要取消掉cmd的快速编辑模式
(2)确保maven下载安装完成全部的jar包
SpringBoot会:
自动配好SpringMVC
*引入SpringMVC全套组件
*自动配好SpringMVC常用组件(功能)
自动配好Web常见功能,如:字符编码问题
*SpringBoot帮我们配置好了所有web开发的常见场景
默认的包结构
*主程序所在包及其下面所有子包里面的组件都会被默认扫描进来
*无需以前的包扫描配置
*如果想要改变扫描路径,可以使用scanBasePackages=""来指定
*或者@ComponentScan
各种配置拥有默认值
*默认配置最终都是映射到某一个类上
按需加载所有自动配置
*非常多的starter
*引入了那些场景这个场景的自动配置才会开始
*SpringBoot所有自动配置功能都在Spring-boot-autoconfigure这个包里面
。。。。。。
springboot配置类:
- 1 配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
- 2 配置类本身也是组件
- 3 proxyBeanMethods:代理bean的方法
-
Full(proxyBeanMethods = true) :组件之间存在依赖
-
Lite (proxyBeanMethods = false) :组件之间没有相互依赖
-
解决组建依赖场景
- 4 @Import({User.class, DBHelper.class})
- 给容器中自动创建出这两个类型的组件,默认组件的名字就是全类名
- 5 @Conditional
- 条件装配:满足Conditional指定的条件,则进行组件注入
- 6 @ImportResource("classpath:beans.xml") 导入spring的配置文件,让他进行生效
小总结:
SpringBoot默认会在底层配置好所有的组件,但是如果用户配置了就以用户配置的优先:
SpringBoot先加载所有的自动配置类
每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值
生效的配置类就会给容器中装配很多组件
只要容器中有这些组件,相当于这些功能就有了
只要用户有自己配置的,就以用户配置的优先
定制化配置:
*用户直接自己@Bean替换底层的组件
*用户去看这个组件使获取的配置文件的什么值就去修改
xxxxxAutoConfiguation ---> 组件 ---> xxxxxProperties里面取值 ---> application.properties
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)