AI智能
改变未来

Spring —三种注入方式

循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的。不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 Spring 源码的熟悉程度,因为要把循环依赖这个问题解释清楚,涉及到不少 Spring 源码。

问题比较庞大,今天先来聊聊实例的注入方式。

1. 实例的注入方式

首先来看看 Spring 中的实例该如何注入,总结起来,无非三种:

  • 属性注入
  • set 方法注入
  • 构造方法注入

我们分别来看下。

1.1 属性注入

属性注入是大家最为常见也是使用最多的一种注入方式了,代码如下:

@Servicepublic class BService {@AutowiredAService aService;//...}

这里是使用

@Autowired

注解注入。另外也有

@Resource

以及

@Inject

等注解,都可以实现注入。

不过不知道小伙伴们有没有留意过,在 IDEA 里边,使用属性注入,会有一个警告:

不推荐属性注入!

1.2 set 方法注入

set 方法注入太过于臃肿,实际上很少使用:

@Servicepublic class BService {AService aService;@Autowiredpublic void setaService(AService aService) {this.aService = aService;}}

这代码看一眼都觉得难受,坚决不用。

1.3 构造方法注入

构造方法注入方式如下:

@Servicepublic class AService {BService bService;@Autowiredpublic AService(BService bService) {this.bService = bService;}}

如果类只有一个构造方法,那么

@Autowired

注解可以省略;如果类中有多个构造方法,那么需要添加上

@Autowired

来明确指定到底使用哪个构造方法。

2. 小结

日常开发应该还是属性注入较多代,码该咋写还咋写,Spring 官方的态度了解一下即可,当然,如果项目允许,也不妨试试 Spring 推荐的代码规范。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Spring —三种注入方式