spring 为什么不用new

worktile 其他 70

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架为了降低对象的耦合性、便于管理和维护,采用了IoC(Inversion of Control)和依赖注入(Dependency Injection)的思想,因此在使用Spring框架时不需要通过new关键字来创建对象。下面我会详细解释为什么Spring不用new。

    1. IoC(Inversion of Control)控制反转:传统的面向对象编程模式中,对象的创建和管理通常由开发者负责,通过new关键字直接在代码中创建实例。而在Spring框架中,控制权发生了反转,容器负责对象的创建和管理,开发者只需要定义好对象及其依赖关系,容器会根据配置文件或注解来实例化和管理对象。这样可以减少开发者的工作量,并且使得系统的结构更加灵活和可扩展。

    2. 依赖注入(Dependency Injection):传统的面向对象编程中,对象之间的依赖关系通常通过类的成员变量或构造函数参数来传递。而在Spring框架中,依赖关系通过注入的方式来解决。开发者只需要定义好对象之间的依赖关系,容器会在创建对象时自动解析依赖并进行注入。这样可以降低对象之间的耦合性,提高代码的可维护性和可测试性。

    3. 面向接口编程:在Spring中,通常会使用接口来定义对象及其依赖关系。而具体的实现类则由容器来选择和管理。这样可以实现代码的解耦,提高系统的灵活性和可扩展性。

    4. AOP(Aspect-Oriented Programming)面向切面编程:Spring框架还提供了AOP的支持,可以通过配置文件或注解的方式来定义特定的切面(Aspect)并将其织入到目标对象的方法中。在不修改原有代码的情况下,可以实现诸如事务管理、日志记录等横切关注点的功能。这样可以进一步提高代码的复用性和可维护性。

    综上所述,Spring框架之所以不用new关键字来创建对象,主要是为了实现控制反转和依赖注入的思想,降低对象的耦合性,提高代码的可维护性和可测试性。同时,通过面向接口编程和AOP的支持,使得系统的结构更加灵活和可扩展。这些特性使得Spring框架成为Java开发中广泛使用的优秀框架之一。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring框架之所以不推荐直接使用new关键字创建对象,是因为它希望通过IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来实现对象的创建和管理。这种方式可以带来以下好处:

    1. 松耦合:使用new关键字创建对象需要直接依赖具体的实现类,如果需要替换实现类,就需要修改代码。而使用IOC容器来管理对象,可以将对象的创建和使用解耦,实现了控制反转,降低了对象之间的耦合性。

    2. 可扩展性:使用IOC容器,可以方便地管理各种不同类型的对象。不同的实现类可以通过配置文件或注解进行切换,无需修改源代码。这样在需要替换实现类或引入新的组件时,只需要修改配置,而不需要修改代码。

    3. 面向接口编程:使用IOC容器和DI,可以通过接口注入的方式创建对象,而不必直接操作具体的实现类。这样代码更加灵活,面向接口编程也更容易进行单元测试或模块化开发。

    4. 统一资源管理:Spring框架提供了对事务、数据库连接、线程池等资源的管理,通过IOC容器和DI,可以方便地进行统一管理和维护。例如,通过注入DataSource对象,可以方便地管理数据库连接。

    5. 面向切面编程:Spring框架支持AOP(Aspect Oriented Programming,面向切面编程),可以通过IOC容器和DI来实现对横切关注点(如日志、性能监控等)的管理。使得程序的关注点更加分离,提高了代码的可维护性。

    总而言之,Spring框架不推荐使用new关键字创建对象,而是倡导使用IOC容器和DI实现对象的创建和管理,这样能够提高代码的灵活性、可扩展性和可维护性,并使得程序的各个组件之间更加松耦合。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架的设计哲学之一就是尽量避免使用new关键字来创建对象。下面我们来解释为什么Spring框架不推荐使用new来创建对象,而是使用依赖注入的方式。

    1. 松耦合

    Spring框架的目标是实现松耦合的应用程序开发。松耦合意味着组件之间的依赖关系更加灵活,可以轻松地替换或者新增组件。使用new关键字直接在代码中创建对象,会导致代码与特定的具体实现紧密耦合在一起。而使用依赖注入,在配置文件中声明依赖关系,可以通过修改配置文件来改变组件之间的依赖关系,而不需要修改源代码。

    2. 单一职责原则

    使用new关键字创建对象的方式,通常会导致一个类既要负责创建对象,又要负责完成其他的业务逻辑。这违反了单一职责原则,即一个类应该只有一个引起变化的原因。通过使用依赖注入创建对象,可以将对象创建和业务逻辑分离,使得每个类都能够专注于自己的核心功能。

    3. 可测试性

    使用new关键字创建对象,在单元测试中会遇到一些问题。对于依赖关系紧耦合的代码,很难对其进行模拟和替换。而使用依赖注入,可以通过注入mock对象来模拟依赖的行为,从而方便地进行单元测试。

    4. 可扩展性

    使用new关键字创建对象,会在代码中硬编码具体的对象实现。如果未来需要替换或者新增实现,就需要修改源代码。而使用依赖注入,可以通过修改配置文件或者注解来实现替换或者新增实现,而无需修改源代码。

    综上所述,Spring框架不推荐使用new关键字来创建对象,而是倡导使用依赖注入的方式。依赖注入可以实现松耦合、单一职责原则、可测试性和可扩展性,从而提高代码的可维护性和可扩展性。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部