Spring注入的三种方式

Spring注入的三种方式

Spring实例注入的三种方式:

  1. 使用注解方式注入
  2. set方法注入
  3. 构造方法注入

1、注解方式注入

使用@Autowired、@Resource或@Inject注解注入。 一般使用注解的都是自己写的实例,直接使用注解注入即可,如果我们要注入的是第三方包里的实例,还是使用xml的方式进行配置注入。

1.1@Autowired:

Spring提供,默认按照类型装配。必须要求要注入的对象存在,如果要允许空值,设置其required属性为true

1.2@Resource:

J2EE提供,默认按照名称装配,名称可以通过name属性指定,默认取字段名进行查找并完成注入。找不到名称时才会按照类型进行装配。所以@Resource的作用其实和@Autowired类似,只不过是注入方式不同。
但是注解注入是不推荐的。

2、set方法注入

我们很少使用该方法注入,可能是因为代码过于臃肿

@Service
public class BService {
    AService aService;

    @Autowired
    public void setaService(AService aService) {
        this.aService = aService;
    }
}

3、构造方法注入

@Service
public class AService {
    BService bService;
    @Autowired
    public AService(BService bService) {
        this.bService = bService;
    }
}

类中有多个构造方法时,@Autowired是必须的,用来指定使用哪个构造方法。

4、 使用哪种构造方法

使用构造方法注入更好,构造注入方法有以下几个优势:
4.1:依赖不可变。通过构造方法注入的bean以后无法修改。
4.2:依赖不为空。构造方法注入时会自动检查注入的对象是否为空。
4.3:完全初始化。拿到的是完全初始化的对象。

5.为什么实体类不用注入

考虑是否将一个class交由spring管理,关键看这个class产生的bean是否符合spring提供的scope的生命周期规则。
5.1、实体类需要附上对应的数据才有意义;
5.2、由spring管理并注入的类是可大量重复使用的;
5.3、一个实体类可对应多条数据,如果实例化该类,则需要针对所有的数据实例化,这是不可能的,导致程序更加臃肿,还不如需要的时候再实例化。

posted @ 2023-06-06 15:00  戒爱学Java  阅读(2011)  评论(0编辑  收藏  举报