Springboot注入Bean的三种方式

时间:2025-04-02 10:20:55
Spring Boot支持多种方式注入Bean,以下是三种常用的方式:

1. 构造函数注入

使用构造函数注入是一种类型安全、清晰明了的方式,可以保证Bean的完整性。在类中定义一个构造函数,并在其参数列表中声明需要注入的Bean对象。Spring会在初始化Bean的时候,自动将对应的Bean对象传入。

示例代码:

```java
@Service
public class MyService {
    private final MyRepository myRepository;

    public MyService(MyRepository myRepository) {
         = myRepository;
    }

    // ...
}
```

2. 属性注入

属性注入是一种常见的注入方式,使用`@Autowired`注解实现。在类的属性上添加`@Autowired`注解,Spring会自动注入对应的Bean对象。需要注意的是,属性注入可能会导致Bean状态的不完整性,因为它们是在构造函数后才被注入的,因此可能会出现空指针异常等问题。

示例代码:

```java
@Service
public class MyService {
    @Autowired
    private MyRepository myRepository;

    // ...
}
```

3. 方法注入

方法注入是一种灵活的注入方式,在类中定义一个方法,并在其参数列表中声明需要注入的Bean对象。使用`@Autowired`注解标记该方法,Spring会在初始化Bean的时候,自动调用该方法并传入对应的Bean对象。

示例代码:

```java
@Service
public class MyService {
    private MyRepository myRepository;

    @Autowired
    public void setMyRepository(MyRepository myRepository) {
         = myRepository;
    }

    // ...
}
```

需要注意的是,方法注入不要在构造函数中调用,因为它们是在构造函数后才被调用的,可能会出现空指针异常等问题。