Spring依赖注入分为两种:构造函数注入和setter方法注入;、
1、构造函数注入的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="userInfo" class="com.openv.impl.UserInfoImpl"> <constructor-arg> <ref bean="helloWorld"/> </constructor-arg> </bean> <!-- 当构造函数有多个参数时,可以使用constructor-arg标签的index属性,index属性的值从0开始 --> <bean name="helloWorld" class="com.openv.impl.HelloWorld"> <constructor-arg index="0"> <ref bean="fileHello"/> </constructor-arg> <constructor-arg index="1"> <value>I am a learner.</value> </constructor-arg> </bean> <!-- 使用构造子注入时,则使用constructor-arg子标签,来指定构造函数的参数 --> <bean name="fileHello" class="com.openv.impl.HelloStrImpl"> <constructor-arg> <value>helloworld.properties</value> </constructor-arg> </bean> </beans>
在上面的这个配置文件中我们主要有3个类:
com.openv.impl.UserInfoImpl,com.openv.impl.HelloWorld,com.openv.impl.HelloStrImpl
这三个类的构造方法分别为:
this.hStr=hStr;
this.words=words;
}
public HelloStrImpl(String profilename){ this.profilename=profilename; }
UserInfoImpl(HelloWorld helloWorld){ this.helloWorld=helloWorld; }
从结合配置文件和构造方法,可以看出下面几点:1、如果构造方法中的参数类型是标准类型如字符串、数字等,在配置文件中就使用<value></value>来作为输入的参数,如果是用户定义的类那么久需要在配置文件中使用<property><ref/></property>来作为输入的参数。2、如果构造函数中含有多个参数在<constructor-args>中添加index来说明是第几个参数,默然是从0开始的。
2、使用setter方式进行注入的配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="userInfo" class="com.openv.impl.UserInfoImpl"> <property name="helloWorld"> <ref bean="helloWorld"/> </property> </bean> <!-- 当构造函数有多个参数时,可以使用constructor-arg标签的index属性,index属性的值从0开始 --> <bean name="helloWorld" class="com.openv.impl.HelloWorld"> <property name="hStr"> <ref bean="fileHello"/> </property> <property name="words"> <value>I am a learner.</value> </property> </bean> <!-- 使用构造子注入时,则使用constructor-arg子标签,来指定构造函数的参数 --> <bean name="fileHello" class="com.openv.impl.HelloStrImpl"> <property name="profilename"> <value>helloworld.properties</value> </property> </bean> </beans>
同样的我们也有三个类,名字分别为:
com.openv.impl.UserInfoImpl,com.openv.impl.HelloWorld,com.openv.impl.HelloStrImpl
这3个类中没有显示的构造方法,但是他们三个类有一个共同的特点是:在这些类中都有setter方法,下面是这些类中参数的setter方法:
private String profilename; public void setProfilename(String profilename) { this.profilename = profilename; }
public void sethStr(HelloStr hStr) { this.hStr = hStr; } public void setWords(String words) { this.words = words; }
public void setHelloWorld(HelloWorld helloWorld) { this.helloWorld = helloWorld; }
使用setter方法我们就能通过spring的注入。在配置文件中发生的主要变化就是<constructor-args>变为了<property>。
在真正开发的过程中建议使用setter方法进行注入,setter方法注入时spring开发团队所提倡的,因为构造函数注入可能会出现下面的情况:A类依赖B类,B类依赖C类,C类又依赖A类,在使用构造函数注入时就会出现死锁,而使用setter方法进行注入就可以有效的解决这种情况。
但是,构造函数注入存在也有他的原因,在没有setter方法的遗留代码或者没有源码的第三方类时,使用<contructor-args>是进行开发时很明智的选择。
下面的代码是我做分析的源码
相关推荐
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过构造函数来传递依赖对象的一种方式。当类有多个构造函数时,Spring会使用带有最多参数的构造函数...
下面我们将详细探讨Spring 中的三种注入方式:接口依赖注入(Type1)、setter/getter 注入(Type2,也称为属性注入)和构造方法注入(Type3)。 1. **接口依赖注入(Type1)** 这种注入方式相对不常见,主要适用于...
本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入方式(二)"中的内容。我们将深入探讨setter注入,这是Spring中最常见的注入方式之一。 ### 一、setter注入 setter注入是通过Spring容器调用对象的...
Spring提供了多种注入方式,包括set注入、构造注入和自动注入,让我们逐一深入探讨。 1. **Set注入** Set注入是最常见的注入方式,它通过setter方法来设置对象的依赖。首先,你需要在类中声明需要注入的属性,并...
本资料“Spring中你不知道的注入方式编程开发技术共6页.pdf”深入探讨了一些不常见但实用的Spring注入方式。尽管描述中提到的文件是一个压缩包,但从其标题我们可以推测其内容可能包括以下几点: 1. **构造器注入**...
Spring框架是Java开发中广泛使用的依赖注入(Dependency Injection,简称DI)容器,它极大地提高了代码的可测试性和可维护性。...理解并掌握这些注入方式,对于高效地使用Spring框架进行开发至关重要。
Spring提供两种主要的自动注入方式:`byName`和`byType`,以及更推荐的`@Autowired`注解。 - `byName`:根据Bean的属性名查找相同名称的Bean进行注入。 - `byType`:如果Bean的属性类型只有一个匹配的Bean,那么...
Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...
Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...
Spring 的依赖注入方式有 setter 注入、构造方法注入和接口注入。依赖注入的目标是在代码之外管理程序组建间的依赖关系。 1. Spring 注入方式有 setter 注入、构造方法注入和接口注入。其中,setter 注入和构造方法...
本文将深入探讨Spring中的依赖注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过在类的构造函数中传入依赖对象来实现的。Spring容器在创建对象时,会调用带有相应依赖的构造...
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 首先,我们来看构造器注入。构造器注入是在创建对象时,通过构造器传递依赖对象。这种方式强制了对象在创建时就必须提供所有必要的依赖...
Spring Boot 中的几种注入方法 在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的...
要用注解注入方式,还需要在applicationContext.xml文件加入一行代码: <context:component-scan base-package="Mode"></context:component-scan> //表示在包mode下面的类将扫描带有@Component,@Controller,@Service...
本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作原理。 1. **构造器注入** 构造器注入是通过构造函数来传递依赖对象的。当创建一个类的新实例时,Spring容器会调用带有所需参数的构造函数,从而...
详细介绍spring的三种注入方式,带有实例和图片
Spring支持两种主要的注入方式:XML配置和注解配置。随着Java的发展,注解方式逐渐成为主流,因为它更简洁、直观。在Spring中,我们通常使用`@Autowired`、`@Qualifier`、`@Resource`等注解来进行依赖注入。 - `@...
spring注入配置文件,使用注解注入的
我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...