Hologram社区生态全景:从主题插件到扩展工具完全解析
2026/4/25 3:58:15
Spring 中的 DI(Dependency Injection,依赖注入)是 Spring 框架的核心特性之一,也是控制反转(IoC,Inversion of Control)原则的具体实现。
依赖注入是一种设计模式,它将对象的依赖关系从对象内部移到外部容器(Spring 容器)来管理。简单来说,就是由容器负责创建对象并注入它所依赖的其他对象,而不是由对象自己创建或查找依赖。
// 没有 DI 的情况publicclassUserService{privateUserDaouserDao;publicUserService(){// 对象自己创建依赖,耦合度高this.userDao=newUserDao();}}// 使用 DI 的情况publicclassUserService{privateUserDaouserDao;// 通过构造函数注入依赖publicUserService(UserDaouserDao){this.userDao=userDao;}}@ComponentpublicclassUserService{privatefinalUserDaouserDao;@AutowiredpublicUserService(UserDaouserDao){this.userDao=userDao;}}@ComponentpublicclassUserService{privateUserDaouserDao;@AutowiredpublicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;}}@ComponentpublicclassUserService{@AutowiredprivateUserDaouserDao;}Spring 通过以下注解实现 DI:
@Component:标记类为 Spring 管理的 Bean@Autowired:自动装配依赖@Service、@Repository、@Controller:特定场景的组件注解@Qualifier:指定注入的 Bean 名称@Value:注入配置值// 定义接口publicinterfaceMessageService{StringsendMessage(Stringmessage);}// 实现类@Service("emailService")publicclassEmailServiceimplementsMessageService{publicStringsendMessage(Stringmessage){return"Email: "+message;}}@Service("smsService")publicclassSmsServiceimplementsMessageService{publicStringsendMessage(Stringmessage){return"SMS: "+message;}}// 使用依赖注入@ServicepublicclassNotificationService{privatefinalMessageServicemessageService;@AutowiredpublicNotificationService(@Qualifier("emailService")MessageServicemessageService){this.messageService=messageService;}publicvoidsendNotification(Stringmessage){System.out.println(messageService.sendMessage(message));}}DI 是 Spring 框架的基石,它通过将对象的创建和依赖管理交给容器,实现了松耦合、易测试、易维护的代码结构。在现代 Java 开发中,DI 已经成为主流的设计模式,不仅限于 Spring,在其他框架中也有广泛应用。