【校招VIP】IOC 的三种注入方法

1天前 收藏 0 评论 0 java开发

【校招VIP】IOC 的三种注入方法

转载声明:文章来源https://blog.csdn.net/weixin_45428910/article/details/142441107 

在 Spring 框架中,IoC(Inversion of Control,控制反转) 通过依赖注入(Dependency Injection,DI)将对象的创建和管理交由 Spring 容器处理。依赖注入主要有三种方式:

1. 构造器注入(Constructor Injection)

通过类的构造器将依赖对象注入到当前对象中。这种方式在类实例化时进行依赖的注入,适用于需要强制依赖的情况。

示例:

java

 public class BookService {  
  private BookDao bookDao;

// 通过构造器注入依赖
public BookService(BookDao bookDao) {
this.bookDao = bookDao;
}

public void save() {
bookDao.save();
}
}

Spring 配置文件 (applicationContext.xml):

xml

<bean id="bookDao" class="com.example.BookDao"/>
<bean id="bookService" class="com.example.BookService">
<!-- 通过构造器注入依赖 -->
<constructor-arg ref="bookDao"/>
</bean>

2. Setter 方法注入(Setter Injection)

通过类中的 setter 方法将依赖对象注入。它允许在对象创建后动态注入依赖,适合不需要强制依赖的情况,或者依赖可能变化的场景。

示例:

java

public class BookService {
private BookDao bookDao;

// 通过 setter 方法注入依赖
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}

public void save() {
bookDao.save();
}
}

Spring 配置文件 (applicationContext.xml):

xml

<bean id="bookDao" class="com.example.BookDao"/>
<bean id="bookService" class="com.example.BookService">
<!-- 通过 setter 方法注入依赖 -->
<property name="bookDao" ref="bookDao"/>
</bean>

3. 基于注解的注入(Annotation-based Injection)

Spring 还支持通过注解来简化依赖注入。常用的注解有:

@Autowired:自动装配依赖
@Qualifier:用于配合 @Autowired,指定特定的 Bean
@Resource:基于名称或类型注入 Bean
@Inject:Java 标准的依赖注入注解

示例:

public class BookService {
@Autowired // 自动注入 BookDao
private BookDao bookDao;

public void save() {
bookDao.save();
}
}

Spring 配置文件 (applicationContext.xml):

xml

<context:component-scan base-package="com.example"/>
<bean id="bookDao" class="com.example.BookDao"/>

总结:

构造器注入:强制依赖,通过构造函数传递依赖对象,适合在对象初始化时即需要的依赖。

Setter 方法注入:可选依赖,通过 setter 方法动态注入,适合需要在对象创建后注入依赖的场景。

基于注解的注入:使用注解简化配置,自动扫描和装配依赖,代码简洁,但需要开启注解支持。

这三种方式在实际开发中可以根据需求灵活选择。

C 0条回复 评论

帖子还没人回复快来抢沙发