【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

posted @ 2022-09-22 16:06  快乐男孩小王  阅读(20)  评论(0编辑  收藏  举报