配置优先级(由高到低)
命令行参数 > Java系统属性 > properties文件 > yml文件 > yaml文件
Bean管理
- 获取bean
- 默认情况下, Spring项目启动时, 会把bean都创建好放在IOC容器中, 如果想要主动获取bean, 可以通过IOC容器的对象来调用相关方法
- 上述所说 [Spring项目启动时, 会把bean都创建好放在IOC容器中] 指的是默认情况, 单例非延迟加载的bean, 具体什么时候创建bean还跟bean的作用域有关
//根据bean的名称获取
DeptController bean1 = (DeptController) applicationContext.getBean("deptController");
System.out.println(bean1);
//根据bean的类型获取
DeptController bean2 = applicationContext.getBean(DeptController.class);
System.out.println(bean2);
//根据bean的名称 及 类型获取
DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);
System.out.println(bean3);
-
bean的作用域
- 我们可以通过 @Scope 注解来配置bean的作用域
@Scope("prototype")
- 注解 @Lazy 可以延迟bean的初始化, 延迟到第一次使用该bean对象的时候再初始化
@Lazy
-
第三方bean
Springboot原理
- Springboot之所以简单是因为他的起步依赖和自动配置, 可以简化很多Spring框架的大量繁琐的配置依赖操作
- 起步依赖的原理基于 Maven 的依赖传递(A依赖B, B依赖C, 那么我们引入A依赖后, 会自动引入B依赖和C依赖), 起步依赖让我们在进行Springboot框架开发时, 减少了大量引入依赖的操作, 只需要引入少量的依赖即可
- 自动配置: Springboot的自动配置就是当 Spring 容器启动后, 一些配置类, bean对象就自动存入到了IOC容器中, 不需要我们手动去声明, 从而简化了开发, 节省了繁琐的配置操作
自动配置原理
-
EnableAutoConfiguration
- 并不是所有配置类中的 @Bean 都会被注册到 Spring IOC 容器当中, 在声明bean对象时, 上面有加一个以 @Conditional 开头的注解, 这种注解的作用就是按照条件进行装配, 只有满足条件之后, 才会将bean注册到 Spring IOC 容器中
@Conditional
- 加在方法上对该方法有效
- 加在类上对该类有效