【JavaEE】深入理解Spring中的IoC与DI:从依赖注入到Bean管理的详解
// 假设存在一个简单的Java类,使用Spring框架的依赖注入功能
public class SimpleMovieLister {
// 使用@Autowired注解自动注入MovieFinder的依赖
private MovieFinder movieFinder;
// 使用构造器注入MovieFinder的依赖
@Autowired
public SimpleMovieLister(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// 设置movieFinder的setter方法,用于依赖注入
@Autowired
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
public void printMovieList() {
// 使用movieFinder来查找和打印电影列表
List<Movie> movies = movieFinder.findMovies();
for (Movie movie : movies) {
System.out.println(movie.getTitle());
}
}
}
// 对应的Spring配置文件(XML格式)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 定义一个bean,这个bean将会自动注入依赖 -->
<bean id="simpleMovieLister" class="com.example.SimpleMovieLister">
<!-- 通过构造器注入MovieFinder的依赖 -->
<constructor-arg ref="movieFinder"/>
</bean>
<!-- 定义一个bean,它是SimpleMovieLister需要的MovieFinder的实现 -->
<bean id="movieFinder" class="com.example.DefaultMovieFinder"/>
</beans>
这个简单的例子展示了如何在Spring中使用依赖注入。SimpleMovieLister
类中的movieFinder
属性通过构造器和setter方法的组合使用@Autowired
注解来自动注入依赖。在Spring配置文件中,我们定义了simpleMovieLister
和movieFinder
两个bean,并通过<constructor-arg>
和<property>
元素将它们关联起来。这样,当Spring容器启动时,它会自动创建SimpleMovieLister
的实例,并将movieFinder
的实例注入到SimpleMovieLister
中,使得SimpleMovieLister
能够使用MovieFinder
的功能。
评论已关闭