Springboot学习记录

本文详细介绍了SpringBoot的启动流程,包括自动配置机制、应用启动步骤以及配置文件的应用。讨论了JSR303校验注解,并概述了SpringBoot处理静态资源的方式,如webjars和静态目录优先级。此外,文章还涉及SpringBoot中实现CommandLineRunner和ApplicationRunner接口、集成Jsp、拦截器、servlet、Filter和Mybatis,以及如何启用事务管理。
摘要由CSDN通过智能技术生成

SpringBoot:

 自动配置pom.xml文件:
    spring-boot-dependencies:核心在父工程中,在引入一些springboot依赖的时候,不需要指定版本
    springboot启动器依赖:
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
    </dependency>
   @Bean:把对象注入到spring容器中,相当于<bean>标签
             @Bean(name="容器中的名称") 不指定默认是方法名字为id

   @Value("${key}"): 获取值

主程序:

    @SpringBootApplication:标注这个类是一个springboot的应用
     复合注解:
     @SpringBootConfiguration:作为配置文件使用,可以用@bean声明对象注入容器
             @Configuration:spring的配置类
                 @Component:spring的组件
     @EnableAutoConfiguration:启动自动配置
             @AutoConfigurationPackage:自动配置包
                 @Import(AutoConfigurationPackages.Registrar.class):自动配置包注册
     @ComponentScan:扫描器,找到注解 默认扫描所在的类的包和子包,所以要放同级目录

   @Import(AutoConfigurationImportSelector.class):自动配置导入选择类
            getAutoConfigurationEntry:获得自动配置的实体的方法
            getCandidateConfigurations:获得候选的配置的方法
                    标注了EnableAutoConfiguration的注解的类
                    protected Class<?> getSpringFactoriesLoaderFactoryClass() {
   
                            return EnableAutoConfiguration.class;
                        }

 获取所有的加载配置
            public static List<String> loadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) {
   
                    ClassLoader classLoaderToUse = classLoader;
                    if (classLoader == null) {
   
                        classLoaderToUse = SpringFactoriesLoader.class.getClassLoader();
                    }
                    String factoryTypeName = factoryType.getName();
                    return (List)loadSpringFactories(classLoaderToUse).getOrDefault(factoryTypeName, Collections.emptyList());
                }

 loadSpringFactories()方法
                 Enumeration urls = classLoader.getResources("META-INF/spring.factories");:获取配置

@ConditionalOnClass注解判断导入条件是否满足

   @ConfigurationProperties(perfix = "变量名前缀"):可以在yaml配置文件中绑定实体类并在配置文件中赋值

@PropertySource(value = "application.yaml"):加载指定配置文件

Springboot注解的结论:

Springboot在启动的时候从spring-boot-autoconfigure-2.6.7.jar/METE-INF/spring.factories中获取EnableAutoConfiguration的值
将这些值作为自动配置类导入容器,满足条件后自动配置类就进行自动配置工作

Springboot应用启动的结论:

SpringApplication.run(Application.class, args):SpringApplication类
run方法
1.推断应用的类型是普通项目还是WEB项目
2.0查找并加载所有可用初始化器,设置到initializers属性中
3.找出所有的应用程序监听器,设置到listeners属性中
4.推断并设置main方法的定义类,找到运行的主类

Springboot自动装配的结论:

1.Springboot启动会加载大量自动配置类(xxxAutoConfigurartion类)
2.我们需要的组件功能要在springboot默认写好的自动配置类中
3.给容器中自动配置类添加组件时,会从xxxProperties类中获取属性,我们只需要在application配置文件中指定这些属性的值

Springboot配置文件application.properties(yaml):

JSR303校验:
@NotNull 注解元素必须是⾮空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否⼩于等于最⼤指定整数值
@Min 验证值是否⼤于等于最⼩指定整数值
@Pattern 验证字符串是否匹配指定的正则表达式
@Size 验证元素⼤⼩是否在指定范围内
@NotNull 注解元素必须是⾮空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否⼩于等于最⼤指定整数值
@Min 验证值是否⼤于等于最⼩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值