spring依赖注入的两种方式:
1.设置注入;
2.构造注入;
设置注入的优点:
与传统的JavaBean的写法更相似,程序员更容易理解、接受,通过setter方式设定依赖关系显得更加直观、明显;
对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,因而导致死你功能下降。而使用设置注入,则避免这下问题;
尤其在某些属性可选的情况下,多参数的构造器更加笨拙!
构造注入的优点:
构造注入可以再构造器中决定依赖关系的注入顺序,优先依赖的优先注入。
对于依赖关系无须变化的Bean,构造注入更有用处;因为没有setter方法,所有的依赖关系全部在构造器内设定,因此,不用担心后续代码对依赖关系的破坏!
依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。对组件的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则;
建议采用以设置注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的注入,尽量采用构造注入;而其他的依赖关系的注入,则考虑采用设置注入!
根据依赖注入方式的不同,Bean的依赖注入通常表现为两种形式:
属性:通过<proerty.../>元素配置,对应设置注入;
构造器参数:通过<constructor-arg.../>元素指定,对应构造注入;
不过是属性还是构造器参数都是为Bean的依赖,接受spring容器管理,依赖关系的值要么是一个确定的值,要么是Spring容器中其他Bean的引用!
通常不使用配置文件管理普通属性值,只使用配置文件管理容器中的Bean实例的依赖关系!
分享到:
相关推荐
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的...理解并熟练掌握这两种注入方式,对于编写健壮、可维护的Spring应用至关重要。同时,注意避免常见的配置错误,能提高开发效率并减少调试时间。
在Spring 4.2.0版本中,这两种注入方式都得到了很好的支持,并且Spring提供了更高级的特性,比如基于注解的注入。通过`@Autowired`注解,可以直接在字段或setter方法上声明依赖,简化XML配置: ```java @Service ...
Spring支持两种主要的注入方式:XML配置和注解配置。随着Java的发展,注解方式逐渐成为主流,因为它更简洁、直观。在Spring中,我们通常使用`@Autowired`、`@Qualifier`、`@Resource`等注解来进行依赖注入。 - `@...
本文将对比分析Struts与Spring这两种流行的MVC框架,帮助开发者更好地理解它们的特点与适用场景。 #### Struts框架详解 **背景介绍** Struts是Apache Jakarta项目下的一个开源框架,由Craig R. McClanahan等人...
2、getter,setter方式注入(比较常用) 3、构造器注入(死的应用) 关于getter和setter方式的注入 1.autowire=defualt 2.autowire=“byName” 3.autowire=bytype 详细解析注入方式 例如...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限...在Spring 2.5及以上版本中,这两种方式都可以无缝结合到Spring的应用上下文中,为开发带来极大的便利。
依赖注入(Dependency Injection,简称DI)是面向对象编程中一种重要的设计模式,它有助于实现代码的松耦合,提高软件的可测试...在Spring等框架的支持下,开发者可以方便地利用这两种注入方式来构建高质量的Java应用。
Spring基于xml的两种依赖注入方式详解 依赖注入是Spring框架中的一种核心机制,它允许开发者将...基于xml的两种依赖注入方式都是Spring框架中重要的组成部分,它们可以帮助开发者更加灵活地管理对象之间的依赖关系。
- Spring的XML配置文件是应用这两种注入方式的常见途径,但随着Spring的发展,现在更推荐使用Java配置类(`@Configuration`和`@Component`注解)或Spring Boot的自动配置功能。 7. **最佳实践**: - 尽量避免使用...
下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是Spring框架的一部分,它提供了简单的定时任务支持。使用`@Scheduled`注解,我们可以很方便地在任何可注入的bean上...
本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...
3. 构造器注入与setter注入:比较两种注入方式的优缺点,选择合适的注入策略。 4. Bean的作用域:掌握singleton、prototype、request、session等不同作用域的概念及其应用场景。 三、AOP(面向切面编程) 1. AOP...
Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦应用程序的业务逻辑和展示层,但各自有着不同的设计哲学和功能特性。 Struts是Apache软件基金会的一个开源项目,...
- 构造子注入(Type3)是通过调用者的构造函数来实现依赖注入的一种方式,这种方式让依赖通过构造函数注入到组件中。 在Spring框架中,Bean的生命周期由容器管理,Spring提供了一个容器,它负责创建Bean、配置Bean...
Spring支持XML配置和基于注解的配置,这两种方式都可以用来定义bean及其依赖。XML配置文件通常以`beans.xml`命名,而在Spring3中,我们可以使用如`@Component`、`@Service`、`@Repository`和`@Controller`等注解来...
这两种方式都可以确保在对象创建完成后立即执行特定的操作。 - **销毁**:同样地,Spring支持通过`destroy-method`属性指定销毁方法,也可以通过实现`DisposableBean`接口并覆盖`destroy()`方法来实现。这对于释放...
EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放标准,由Java社区内的开源...
IntellijIDEA 中 MybatisMapper 自动注入警告的 6 种解决方案 IntellijIDEA 中 MybatisMapper 自动注入警告的 6 种解决方案是开发者们经常遇到的问题。本文将分析原因,并列出解决该警告的几种方案。 方案 1:为 @...