IOC注入方式详解(4种常见注入)

IOC注入方式详解(4种常见注入)-mikechen

Spring框架中经常使用到IOC注入方式,下面就给大家详解常见的4种IOC注入方式@mikechen

1.构造函数注入

通过构造函数注入,你可以将依赖项作为构造函数的参数传递给需要依赖的类。

如下所示:

public class UserRepository {
    // ...
}

public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // ...
}

在上面的示例中,UserService 的构造函数接受一个 UserRepository 参数,表示它依赖于 UserRepository

在Spring配置文件中,我们配置 UserService 的bean,并通过构造函数注入 UserRepository

<bean id="userRepository" class="com.example.UserRepository" />

<bean id="userService" class="com.example.UserService">
    <constructor-arg ref="userRepository" />
</bean>

在这里,<constructor-arg> 元素指定了构造函数的参数。ref 属性的值是需要注入的 UserRepository bean 的ID。

 

2.属性注入

Spring属性注入主要是通过setter方法为类的属性设置依赖项。

如下所示:

public class UserRepository {
    // ...
}

public class UserService {
    private UserRepository userRepository;

    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // ...
}

在上面的示例中,UserService 类有一个名为 userRepository 的属性,通过 setUserRepository 方法进行注入。

 

3.注解注入

使用注解来标记要注入的属性、字段、构造函数等,常用的注解包括@Autowired@Qualifier@Resource等。

如下所示:

@Component
public class UserService {
    @Autowired
    private UserRepository userRepository;

    // ...
}

在这个示例中,UserRepository 实例会被自动注入到 userRepository 属性中。

 

4.自动装配

这是一种基于类型的依赖注入方式,通过在bean的定义中设置自动装配模式,常用的自动装配模式包括byTypebyNameconstructor等。

如下所示:

假设有一个 Student 类,它的构造函数需要一个 School 实例作为依赖项。

public class Student {
    private School school;

    public Student(School school) {
        this.school = school;
    }

    // ...
}

在Spring配置文件中,启用自动装配并设置装配模式为 constructor

<bean id="student" class="com.example.Student" autowire="constructor" />

<bean id="school" class="com.example.School" />

这将自动将一个 School 实例通过构造函数注入到 Student 类中。

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

评论交流
    说说你的看法