大厂学院设计模式day04

p03基本注解

在这里插入图片描述
在这里插入图片描述
使用@Bean注解加入容器
在这里插入图片描述

@import注解把bean加入容器,但是属性name为null
在这里插入图片描述
@import与ImportSelector接口结合使用把bean加入容器

public class Blue {
}

public class Red {
}

/**
 * 自定义实现
 */
public class MyImportSelector implements ImportSelector {
	@Override
	public String[] selectImports(AnnotationMetadata importingClassMetadata) {
		return new String[]{"com.atguigu.spring.bean.Blue"};
	}

}

@Configuration
//@Import(Person.class)
//注册red,注册接口实现类,从而注册blue
@Import({Red.class, MyImportSelector.class})
public class MainConfig {
//	@Bean
//	public Person person(){
//		Person person = new Person();
//		person.setName("李四");
//		return person;
//	}
}

public class AnnotationMainTest {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
		Red red = annotationConfigApplicationContext.getBean(Red.class);
		Blue blue = annotationConfigApplicationContext.getBean(Blue.class);
		System.out.println(red);
		System.out.println(blue);
	}
}

结果:两个bean都加入了容器
在这里插入图片描述
使用@Import注解与ImportBeanDefinitionRegistrar接口实现类实现bean加入容器
在这里插入图片描述
打印容器中的bean名称
在这里插入图片描述

@ lookup场景
person scope使用单例,但是cat scope使用原型模式prototype
如果person中使用@autowire直接注入cat 的bean,多个person中 cat还是是同一个cat的bean(因为person是单例的,创建容器的时候,就已经创建好了person和cat),
要想注入不同的cat

1.去除@autowire注解
在这里插入图片描述
2.get方法上使用@loopup注解
@Lookup 表示去容器中找。但是注意:@Bean的这种方式注册的Person @Lookup不生效,使用包扫描的方式可以
在这里插入图片描述

p04 spring源码分析-spring框架整体流程

在这里插入图片描述

p05 spring源码-资源与资源加载器接口

在这里插入图片描述
Resource接口
在这里插入图片描述
ResourceLoader接口
在这里插入图片描述

p06 BeanFactory 中一个重要的档案馆

在这里插入图片描述

在这里插入图片描述
AnnotationConfigApplicationContext组合了档案馆
在这里插入图片描述
档案管的类关系
在这里插入图片描述
在这里插入图片描述

p07 什么时候BeanDefinition放入档案馆

DefaultListableBeanFactory实现了BeanDefinitionRegister bean定义注册器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

p08读取bean信息

在这里插入图片描述

p09 spring源码分析-抛出了BeanPostProcessor

在这里插入图片描述
bean可以实现各种aware接口
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值