1.核心基础
1-1.基础注解
注解 | 作用 | 备注 |
---|---|---|
@Bean | 容器中注册组件 | |
@Primary | 同类组件如果有多个,标注主组件 | |
@DependsOn | 组件之间声明依赖关系 | |
@Lazy | 组件懒加载(最后使用的时候才创建) | |
@Scope | 声明组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON,) | |
@Primary | 同类组件如果有多个,标注主组件 | |
@Configuration | 声明这是一个配置类,替换以前(beans.xml) | 理解proxyBeanMethods |
@Controller | ||
@Service | ||
@Repository | ||
@Component | ||
@Indexed | 加速注解,所有标注了@Indexed的组件,直接会启动快速加载 | |
@Order | 数字越小优先级越高,越先工作 | |
@ComponentScan | 包扫描 | |
@ComponentScans | 包扫描 | |
@Conditional | 条件注入 1,2 @ConditionalOnMissingBean | 自定义 |
@Import | 导入第三方jar包中的组件 | |
@ImportResource | 导入以前的xml配置文件,让其生效 | |
@Profile | 基于多环境激活 | |
@PropertySource | 外部properties配置文件和JavaBean进行绑定.结合ConfigurationProperties | |
@PropertySources | ||
@Autowired | 自动装配 | |
@Qualifier | 精确指定 | |
@Value | 取值、计算机环境变量、JVM系统。xxxx | SpringBoot支持各种外部化配置 |
2.ioc
ioc就是容器,降低耦合,控制反转,把创建对象和对象之间调用讲给spring
2-1.底层原理
xml 解析 工厂模式 反射
ioc接口
1.BeanFactory:内部使用
2.ApplicationContext:BeanFactory子接口 开发常用功能更强大
Bean管理
创建及注入
1.xml
id属性:唯一标识
class属性:类全路径(包路径)
2.创建对象,默认无参构造创建
3.基于xml注入属性
3-1.DI依赖注入
set注入
使用有参构造注入
xml注入标签
set
<property name="" value=""></property>
有参构造
<constructor-arg name=" value="></constructor -arg>
4.p命名空间(了解)
5.xml注入其他属性
<null/>
特殊符号<![CDATA[值]]>
6.外部bean注入
7.内部bean注入
8.注入属性-级联赋值
第二种
集合注入
3.ioc两种bean管理
1.spring中两种bean,普通bean,和工厂bean
2.普通bean:在配置文件中定义bean,返回这种bean
3.实现FactoryBean可以返回,其他类型Bean
ioc操作Bean(Bean作用域)
1.创建bean单实例或多实例,默认单实例对象
2.scope属性值
singleton 默认单实例
prototype 多实例
这里个属性区别
1.singleton 单列 prototype 多例
2.singleton 加载配置文件创建 而prototype是调用getBean方法是创建多实例
ioc操作bean(bean的生命周期)
1.生命周期
1创建到销毁
2.bean的生命周期
1.通过构造器创建bean的实例
2.为bean的属性设置值和对其他bean引用(set方法)
3.bean的初始化方法(需要配置)
4.bean可以使用(对象获取到了)
5.当容器关闭时候,调用bean的销毁方法(配置)
3.bean的后置处理器,bean生命周期有七步
23之间:把Bean实例传递bean后置处理器的方法
34:把Bean实例传递bean后置处理器的方法
后置处理器实现 接口 BeanPostProcessor
ioc操作bean(xml自动装配)
1.根据名称属性自动装配
ioc操作bean(外部属性文件)
1.直接引入
2.引入外部文件属性
(1)引入德鲁伊依赖
(2)写外部配置 左边名称随意
(3)把命名空间
(4)用context引入文件
ioc操作bean(注解)
1.注解 @Component
2.基于注解创建对象
1.引入aop依赖
2.开启组件扫描
在xml引入context命名空间
对比只扫描里面的
不扫描
3.基于注解属性注入
1.@AutoWired:根据属性类型自动装配
2.@Qualifier: 根据名称进行注入 要和@AutoWired一起使用 一个接口有多个实现类 有俩个以上属性找不到用
3.@Resource:根据属性 名称注入 javax扩展包里的 不是spring里的
4.@Value:注入属性
4.完全注解开发
1.创建配置类,代替xml
@Configuration
@ComponentScan(basePackages={“com.spring”})