day08Bean和SpringBoot原理

1.配置优先级

在这里插入图片描述
注意:虽然SpringBoot支持多种格式配置文件,但是在实际项目开发时,推荐使用统一的格式配置(yml是主流)。

除了支持配置文件属性,还支持Java系统属性命令行参数的方式进行属性配置。
Java系统属性:-Dserver.port=9000(优先级第二高)
命令行参数:–server.port=10010(优先级最高)

2.Bean管理

2.1获取Bean

默认情况下,Spring项目启动时,会把bean都创建好放在IOC容器中(其实还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言),如果想要主动获取这些bean,可以通过如下方式:

  • 根据name获取bean:Object getBean(String name)
  • 根据类型获取bean: T getBean(Class requiredType)
  • 根据name获取bean(带类型转换): T getBean(String name, Class requiredType)
  @Autowired
    private ApplicationContext applicationContext;//IOC容器对象

    @Test
    public void testGetBean(){
        //根据bean的名称获取
        HelloController bean1 = (HelloController) applicationContext.getBean("helloController");
        System.out.println(bean1);
        //根据bean的类型获取
        HelloController bean2 = applicationContext.getBean(HelloController.class);
        System.out.println(bean2);
        //根据bean的名称及类型获取
        HelloController bean3 = applicationContext.getBean("helloController",HelloController.class);
        System.out.println(bean3);
    }

在这里插入图片描述

2.2Bean的作用域

spring支持五种作用域,后三种在web环境才生效:

作用域说明
singleton容器内同名称的bean只有一个实例(单例)(默认)
prototype每次使用该bean时会创建新的实例(非单例)
request每个请求范围内会创建新的实例(Web环境中,了解)
session每个会话范围内会创建新的实例(Web环境中,了解)
application每个应用范围内会创建新的实例(Web环境中,了解)

可以通过@Scope注解来进行配置作用域:

@Scope("prototype")
@RestController
@RequestMapping("/hello")
public class HelloController{
}

注意:

  • 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
  • prototype的bean,每一次使用该bean的时候都会创建一个新的实例
  • 实际开发中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置Scope属性

2.3第三方Bean

  • 如果要管理的Bean对象来自于第三方(不是自定义的),是无法用@Component及衍生注解声明bean的,就需要用到@Bean注解。
  • 如果要管理第三方Bean对象,建议对这些Bean进行集中分类配置,可以通过@Configuration注解声明一个配置类。
import org.dom4j.io.SAXReader;
@Configuration
public class CommonConfig{	
	//声明第三方bean
	@Bean//将当前方法的返回值对象交给IOC容器管理,成为IOC容器bean对象
		//通过@Bean注解的name/value属性指定bean名称,如果未指定,默认是方法名
	public SAXReader saxReader(){
		return new SAXReader();
	}
}

注意:

  • 通过@Bean注解的name或value属性可以声明Bean的名称,如果不指定,默认Bean的名称就是方法名。
  • 如果第三方Bean需要依赖其他Bean对象,直接在Bean定义方法中设置形参即可,容器会根据类型自动装配。

3.SpringBoot原理(高频面试点)

3.1 起步依赖

maven的依赖传递

3.2自动配置

SpringBoot的自动配置就是当Spring容器启动后,一些配置类、Bean对象就自动存入到了IOC容器中,不需要手动去声明,从而简化了开发,省去了繁琐的配置操作。
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值