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