寒假学习(5)

Spring框架的核心
依赖注入
在传统的编程中,类会直接创建其所依赖的对象。例如,一个 Car 类可能需要一个 Engine 对象,它会在构造函数或类中直接实例化 Engine:

public class Car {
    private Engine engine;

    public Car() {
        engine = new Engine(); // 直接实例化依赖对象
    }

    public void start() {
        engine.start();
    }
}

这种方式的缺点是 Car 类和 Engine 类之间紧密耦合,难以进行扩展和单元测试。
而通过依赖注入,Car 类不需要自己创建 Engine 实例,而是由外部容器(如Spring)提供给它所需要的依赖。
在Spring中,依赖注入有两种常见的方式:
构造器注入(Constructor Injection)
构造器注入是通过类的构造函数来传递依赖关系。在Spring中,使用@Autowired注解或XML配置来实现。

@Component
public class Engine {
    public void start() {
        System.out.println("Engine starting...");
    }
}

@Component
public class Car {
    private Engine engine;

    // 构造器注入
    @Autowired
    public Car(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }
}

@Component注解用于标记Engine和Car为Spring容器管理的组件。
@Autowired注解标记构造器,表示Spring会自动注入Engine对象。
Spring容器会在启动时自动创建Engine和Car实例,并通过构造器将Engine注入到Car中。
Setter注入(Setter Injection)
Setter注入是通过对象的setter方法来设置依赖关系。

@Component
public class Engine {
    public void start() {
        System.out.println("Engine starting...");
    }
}

@Component
public class Car {
    private Engine engine;

    // Setter方法注入
    @Autowired
    public void setEngine(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }
}

@Autowired注解放在setter方法上,Spring会自动调用该方法并传入Engine实例。

posted @   muxin1630  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示