[SpringBoot2--2] SpringBoot的特点和容器功能

[SpringBoot2--2] SpringBoot的特点和容器功能,第1张

[SpringBoot2--2] SpringBoot的特点和容器功能

目录

1.SpringBoot的特点

1.1 依赖管理

1.2 自动装配

2.容器功能

 2.1 组件添加

2.2 原生配置文件引入

2.3配置绑定


1.SpringBoot的特点 1.1 依赖管理

父项目做依赖管理

依赖管理    

        org.springframework.boot
        spring-boot-starter-parent
        2.3.4.RELEASE


他的父项目
 
    org.springframework.boot
    spring-boot-dependencies
    2.3.4.RELEASE
 

 开发导入starter场景启动器 spring-boot-starter-* : *就某种场景 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。 所有场景启动器最底层的依赖如下:


  org.springframework.boot
  spring-boot-starter
  2.3.4.RELEASE
  compile

  • 无需关注版本号,自动版本仲裁引入依赖默认都可以不写版本引入非版本仲裁的jar,要写版本号。
  • 可以修改默认版本号
        在当前项目里面重写配置
        
            5.1.43
        
    1.2 自动装配

    自动装配好对应的tomcat

    引入tomcat依赖并配置tomcat

  • 自动配好SpringMVC

    引入SpringMVC的全套组件自动配置好SpringMVC的常用组件(功能)自动配置好常见的web功能 比如字符集编码问题

  • 各种配置拥有默认值

    默认配置最终都是映射到某个类上,如:MultipartProperties配置文件的值最终会绑定每个类上,这个类会在容器中创建对象按需加载所有的自动配置项

    我们搭建好SpringBoot项目会自动加载非常多的starter场景启动器,他们并不会全部开启,而是根据我们设置的需求开启相关的场景启动器SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面 2.容器功能  2.1 组件添加

    1.@Configuration 告诉springboot当前类是一个配置类

    属性:proxyBeanMethods(默认是true):代理bean的方法 属性值不同则对应两种模式

            Full(proxyBeanMethods = true)---组件依赖,容器中的一个组件中包含另外一个组件                  Lite(proxyBeanMethods = false)---若只是单纯的注册组件而不存在组件依赖,该模式可以加快启动速度

    如下场景则需要Full模式:

    @Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类
    public class MyConfig {
    
        @Bean 
        public User user01(){
            User zhangsan = new User("zhangsan", 18);
            //user组件依赖了Pet组件
            zhangsan.setPet(tomcatPet());
            return zhangsan;
        }
    
        @Bean("tom")
        public Pet tomcatPet(){
            return new Pet("tomcat");
        }
    }
    

    2.@Bean、@Component、@Controller、@Service、@Repository 注册当前组件到ioc容器中

    3.@import

    //@import({User.class, DBHelper.class}):给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
    
    @import({User.class, DBHelper.class})
    @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
    public class MyConfig {
    }

    4.@Conditional 条件装配:满足Conditional指定的条件,则进行组件注入 举例如下:

    @ConditionalOnBean(name = "tom") //是否存在名为"tom"的组件
    @ConditionalOnMissingBean(name = "tom") //是否不存在名为"tom"的组件
    2.2 原生配置文件引入

            1.@importResource 可以将我们已经配置在xml文件中的信息进行引入

    @importResource("classpath:beans.xml")
    public class MyConfig {}
    
    
    2.3配置绑定

    如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用?

    1.@Component+@ConfigurationProperties:

    将我们配置在application.properties中的信息读取并属性注入

    mycar.brand=BMW
    mycar.price=100000
    @Component
    @ConfigurationProperties(prefix = "mycar")
    public class Car {
    
        private String brand;
        private Integer price;
    
        public String getBrand() {
            return brand;
        }
    
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        public Integer getPrice() {
            return price;
        }
    
        public void setPrice(Integer price) {
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Car{" +
                    "brand='" + brand + ''' +
                    ", price=" + price +
                    '}';
        }
    }

    2.@EnableConfigurationProperties + @ConfigurationProperties

    @EnableConfigurationProperties(Car.class)
    //1、开启Car配置绑定功能
    //2、把这个Car这个组件自动注册到容器中
    public class MyConfig {
    }

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zaji/5708379.html

  • (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-12-17
    下一篇 2022-12-18

    发表评论

    登录后才能评论

    评论列表(0条)

    保存