返回

深入剖析 Spring IoC 和 DI,开启你的 Spring 开发之旅

后端

春风拂面,Spring 之美

Spring 框架如一股清新春风,为 Java 开发领域带来了勃勃生机。它以轻量级、易用性和可扩展性著称,迅速成为众多开发者的不二之选。在 Spring 的怀抱里,你可以轻松创建和管理配置好的对象,设置对象的属性值,并将对象存储在 Spring 容器中。这一切,都离不开 IoC 和 DI 这两大核心概念。

IoC 与 DI:拨开迷雾见天日

IoC:控制反转,让对象掌控自己的命运

IoC,即控制反转,是一种设计思想,它将对象的创建和管理权从应用程序代码中分离出来,交由 Spring 容器来掌控。在 IoC 的世界里,对象不再需要自我创建,也不再需要显式地依赖其他对象,只需将自己的依赖关系声明给 Spring 容器,即可坐享其成。

DI:依赖注入,让对象相亲相爱

DI,即依赖注入,是 IoC 的具体实现方式之一。在 DI 的模式下,Spring 容器会根据对象声明的依赖关系,自动将这些依赖的对象注入到该对象中,从而完成对象的装配。这种方式,极大地简化了对象的创建和配置过程,让开发者可以专注于业务逻辑的实现,而不必为对象的依赖关系而烦恼。

实战演练:Spring IoC 与 DI 的甜蜜约会

1. 导入 Spring 依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.3.23</version>
</dependency>

2. 创建 Spring 容器

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

3. 编写配置类

@Configuration
public class AppConfig {

  @Bean
  public UserService userService() {
    return new UserServiceImpl();
  }

  @Bean
  public UserRepository userRepository() {
    return new UserRepositoryImpl();
  }

}

4. 编写 Service 类

public interface UserService {

  List<User> getAllUsers();

}

5. 编写 Service 实现类

public class UserServiceImpl implements UserService {

  private UserRepository userRepository;

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

  @Override
  public List<User> getAllUsers() {
    return userRepository.findAll();
  }

}

6. 编写 Repository 类

public interface UserRepository {

  List<User> findAll();

}

7. 编写 Repository 实现类

public class UserRepositoryImpl implements UserRepository {

  @Override
  public List<User> findAll() {
    // 假设从数据库中查询到了所有用户
    return Arrays.asList(new User(1L, "John Doe"), new User(2L, "Jane Doe"));
  }

}

8. 运行程序,尽情享受

UserService userService = context.getBean(UserService.class);

List<User> users = userService.getAllUsers();

for (User user : users) {
  System.out.println(user.getName());
}

结语:春暖花开,携手共进

Spring IoC 和 DI,犹如两颗璀璨的明珠,为 Java 开发的世界增添了无限光彩。它们以其简洁性和灵活性,让开发人员可以轻松创建和管理应用程序,而无需为对象的创建和依赖关系而烦恼。如果您正在寻找一种强大的框架来构建应用程序,那么 Spring 绝对是您的不二之选。