Spring源码学习(day02)

@Resource是如何工作的

  1. @Resource和@Autowired注解类似, 用于依赖注入, @Resource是Java层面提供的, 而@Autowired是Spring提供的, 它们的底层实现逻辑也有不同
  2. @Resource有一个name属性, 当该属性不为空时, Spring会直接根据所指定的name去容器中寻找对应的bean对象, 如果没找到则抛异常
  3. 如果name为空, 那么@Resource会先根据要注入的属性名去容器中查找对象, 如果存在则进行注入, 如果不存在则根据属性类型在容器中进行查找, 找到一个则进行注入

@Value是如何工作的

  1. @Value也是用于进行依赖注入的, 只不过@Value是用于从Properties等文件中获取属性值的, 并且@Value可以解析Spel
  2. @Value(“xxx”) 这种形式会将xxx直接赋值到属性里, 如果类型无法转换则会报错
  3. @Value("${xxx}") 这种形式会从文件中找到对应的属性进行赋值, 如果文件中不存在对应的属性那么会将该值解析为字符串进行赋值
  4. @Valule("#{xxx}") 这种形式会解析成Spring表达式, 从容器中寻找name为xxx的bean对象, 如果找到了则进行注入, 没找到则抛异常

FactoryBean是什么

  1. FactoryBean是Spring提供的灵活创建Bean的方式, 可以实现FactoryBean接口重写getObject()方法来创建bean对象
  2. FactoryBean接口有三个方法:
    1. getObject() 方法用于创建bean对象
    2. isSingleton() 方法用于表示该对象是否是单例
    3. getObjectType() 方法用于表示bean对象类型
    4. 下图中, 实际创建了两个bean对象, 一个是类型为User, name为zhouyu的bean对象, 一个是name为&zhouyu的FactoryBean对象
      在这里插入图片描述
  3. 注意分清FactoryBean 和 BeanFactory,
    1. FactoryBean 是一个小型工厂, 它自己也是bean对象, 同时可以创建bean对象
    2. BeanFactory是容器, 可以生产出各种各样的bean对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值