Bean专题——什么是Bean?怎么注册、使用?生命周期?作用域?

本文详细探讨了Spring框架中的Bean,包括Bean的定义、注册与使用、命名规则,以及不同方式的装配策略。重点讲解了Bean的生命周期,如BeanDefinition、实例化、依赖注入、Aware接口、BeanPostProcessor、初始化与销毁方法、作用域,以及FactoryBean和BeanFactory的区别。同时介绍了ApplicationContext的常见实现。
摘要由CSDN通过智能技术生成

1.什么是Bean?

  • Bean是被实例的、组装的、及被Spring容器管理的Java对象。
  • Spring容器会自动完成Bean对象的实例化。
  • 创建应用对象之间的协作关系的行为被称为:装配,这就是依赖注入的本质。

2.Spring三种装配方案

1.隐式的bean发现机制和自动装配;
  • 1.涉及注册Bean的注解:@Component , @Repository , @ Controller , @Service , @Configration;(这些注解只局限于自己编写的类)。
  • 2.使用Bean的注解:@Autowired(默认byType注入,跟@Qualifier(“bean名称”)搭配进行byName注入), @Resource(默认byName注入,可以设置为byType);
  • 3.指定要扫描的包@CompoentScan(“要扫描的包名”),后边没参数时,默认扫描当前包、及其子包。
2.使用Java代码进行显示配置;
  • 1.涉及注解:@Bean,当引入第三方组件时,就需要用它去返回一个对象。
  • 2.@Bean注解用在返回实例的方法上,告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。 产生这个Bean对象的方法Spring只会调用一次
  • 3.@Import也能把第三方库中的类实例交给spring管理
3.在xml文件中进行显示配置。(不展开)

3.关于Bean的命名

  • 1.默认是类名的首字母小写。
    下边的bean默认的ID名:jayDisc
@Component
public class JayDisc implements ICompactDisc {
   
  ...
}
  • 2.或者自己指定
    下边bean的ID名:zhoujielun
@Component("zhoujielun")
public class JayDisc implements ICompactDisc {
   
  ...
}

3.5.Spring的常用注入方式

  • 1.构造器的依赖注入
  • 2.Setter方法的注入
  • 3.基于注解的注入,最好的解决方案是用构造器参数,实现强制依赖,Setter方法实现可选依赖。

4.关于自动注入——以@Autowire为例

1.源码
  • 属性boolean required();表示,如果没找到依赖注入的对象是否报错?
    可以自己设置为false不报错,但是一旦用到没被注入的对象会报NullPonterException空指针异常。
@Target({
   ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
   

	
	 * Declares whether the annotated dependency is required.
	 * <p>Defaults to {
   @code true}.
	这个属性表示,如果没找到依赖注入的对象是否报错?
	boolean 
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值