- 浏览: 461070 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
spring 中 注入方式分为构造方法注入和setter方法注入
1 构造方法注入,配置文件applicationContext.xml中:
简洁一点的写法:
有些时候,容器在加载XML配置的时候,因为某些原因,无法明确配置项与对象的构造方法参数列表的一一对应关系,就需要请<constructor-arg>的type或者index属性出马。比如,对象存在多个构造方法,当参数列表数目相同而类型不同的时候,容器无法区分应该使用哪个构造方法来实例化对象,或者构造方法可能同时传入最少两个类型相同的对象。
如果从BeanFactory取得该对象并调用toString()查看的话,我们会发现Spring调用的是第一个构造方法,因为输出是如下内容:
.MockBusinessObject@f73c1[dependency1=111111,dependency2=0]
但是,如果我们想调用的却是第二个传入int类型参数的构造方法,又该如何呢?可以使用type属性,通过指定构造方法的参数类型来解决这一问题,配置内容如下代码所示:
<bean id="mockBO" class="..MockBusinessObject">
<constructor-arg type="int">
<value>111111</value>
</constructor-arg>
</bean>
(2)index 属性
当某个业务对象的构造方法同时传入了多个类型相同的参数时,Spring又该如何将这些配置中的信息与实际对象的参数一一对应呢?好在,如果配置项信息和对象参数可以按照顺序初步对应的话,Spring还是可以正常工作的。
那么,我们可以得到如下对象:
MockBusinessObject@1ef8cf3[dependency1=11111,dependency2=22222]
但是,如果要让“11111”作为对象的第二个参数,而将“22222”作为第一个参数来构造对象,又该如何呢?好!可以颠倒配置项,如以下代码所示:
不过,还有一种方式,那就是像如下代码所示的那样,使用index属性:
2 setter方法注入
2. setter方法注入的XML之道
与构造方法注入可以使用<constructor-arg>注入配置相对应,Spring为setter方法注入提供了<property>元素。
<property>有一个name属性(attribute),用来指定该<property>将会注入的对象所对应的实例变量名称。之后通过value或者ref属性或者内嵌的其他元素来指定具体的依赖对象引用或者值,如以下代码所示:
当然,如果只是使用<property>进行依赖注入的话,请确保你的对象提供了默认的构造方法,也就是一个参数都没有的那个。
以上配置形式还可以简化为如下形式:
使用<property>的setter方法注入和使用<constructor-arg>的构造方法注入并不是水火不容的。实际上,如果需要,可以同时使用这两个元素:
转载自http://blog.163.com/ma13481280654@126/blog/static/732525372011102444356766/
1 构造方法注入,配置文件applicationContext.xml中:
<bean id="djNewsProvider" class="..FXNewsProvider"> <constructor-arg> <ref bean="djNewsListener"/> </constructor-arg> <constructor-arg> <ref bean="djNewsPersister"/> </constructor-arg> </bean>
简洁一点的写法:
<bean id="djNewsProvider" class="..FXNewsProvider"> <constructor-arg ref="djNewsListener"/> <constructor-arg ref="djNewsPersister"/> </bean>
有些时候,容器在加载XML配置的时候,因为某些原因,无法明确配置项与对象的构造方法参数列表的一一对应关系,就需要请<constructor-arg>的type或者index属性出马。比如,对象存在多个构造方法,当参数列表数目相同而类型不同的时候,容器无法区分应该使用哪个构造方法来实例化对象,或者构造方法可能同时传入最少两个类型相同的对象。
(1) type属性 public class MockBusinessObject { private String dependency1; private String dependency2; public MockBusinessObject(String dependency) { this.dependency1 = dependency; } public MockBusinessObject(int dependency) { this.dependency2 = dependency; } ………… } 这个类有两个构造方法,但参数类型不同的。 <bean id="mockBO" class="..MockBusinessObject"> <constructor-arg> <value>111111</value> </constructor-arg> </bean>
如果从BeanFactory取得该对象并调用toString()查看的话,我们会发现Spring调用的是第一个构造方法,因为输出是如下内容:
.MockBusinessObject@f73c1[dependency1=111111,dependency2=0]
但是,如果我们想调用的却是第二个传入int类型参数的构造方法,又该如何呢?可以使用type属性,通过指定构造方法的参数类型来解决这一问题,配置内容如下代码所示:
<bean id="mockBO" class="..MockBusinessObject">
<constructor-arg type="int">
<value>111111</value>
</constructor-arg>
</bean>
(2)index 属性
当某个业务对象的构造方法同时传入了多个类型相同的参数时,Spring又该如何将这些配置中的信息与实际对象的参数一一对应呢?好在,如果配置项信息和对象参数可以按照顺序初步对应的话,Spring还是可以正常工作的。
public class MockBusinessObject { private String dependency1; private String dependency2; public MockBusinessObject(String dependency1,String dependency2) { this.dependency1 = dependency1; this.dependency2 = dependency2; } } 并且,配置内容如以下代码所示: <bean id="mockBO" class="..MockBusinessObject"> <constructor-arg value="11111"/> <constructor-arg value="22222"/> </bean>
那么,我们可以得到如下对象:
MockBusinessObject@1ef8cf3[dependency1=11111,dependency2=22222]
但是,如果要让“11111”作为对象的第二个参数,而将“22222”作为第一个参数来构造对象,又该如何呢?好!可以颠倒配置项,如以下代码所示:
<bean id="mockBO" class="..MockBusinessObject"> <constructor-arg value="22222"/> <constructor-arg value="11111"/> </bean>
不过,还有一种方式,那就是像如下代码所示的那样,使用index属性:
<bean id="mockBO" class="..MockBusinessObject"> <constructor-arg index="1" value="11111"/> <constructor-arg index="0" value="22222"/> </bean>
2 setter方法注入
2. setter方法注入的XML之道
与构造方法注入可以使用<constructor-arg>注入配置相对应,Spring为setter方法注入提供了<property>元素。
<property>有一个name属性(attribute),用来指定该<property>将会注入的对象所对应的实例变量名称。之后通过value或者ref属性或者内嵌的其他元素来指定具体的依赖对象引用或者值,如以下代码所示:
<bean id="djNewsProvider" class="..FXNewsProvider"> <property name="newsListener"> <ref bean="djNewsListener"/> </property> <property name="newPersistener"> <ref bean="djNewsPersister"/> </property> </bean>
当然,如果只是使用<property>进行依赖注入的话,请确保你的对象提供了默认的构造方法,也就是一个参数都没有的那个。
以上配置形式还可以简化为如下形式:
<bean id="djNewsProvider" class="..FXNewsProvider"> <property name="newsListener" ref="djNewsListener"/> <property name="newPersistener" ref="djNewsPersister"/> </bean>
使用<property>的setter方法注入和使用<constructor-arg>的构造方法注入并不是水火不容的。实际上,如果需要,可以同时使用这两个元素:
<bean id="mockBO" class="..MockBusinessObject"> <constructor-arg value="11111"/> <property name="dependency2" value="22222"/> </bean>
转载自http://blog.163.com/ma13481280654@126/blog/static/732525372011102444356766/
发表评论
-
spring aop 切入点配置,重用切点表达式
2014-11-08 15:54 1328spring aop 配置时,需要多处配置切入表达式,这 ... -
spring aop 优先级
2014-11-08 15:43 914spring aop 横切面有多个时,涉及到 优先级问题。 ... -
spring aop 基于注解配置
2014-11-08 15:27 571spring aop 的作用是 1 每一个事务逻 ... -
spring bean 的基础配置
2014-11-08 00:05 628spring bean的配置包含 3种基本情况 1 ... -
spring 事务配置
2014-11-03 21:36 756spring 官方团队 建议我们使用注解方式 配置事务,这 ... -
spring 事务属性分类
2014-11-02 22:49 620required 业务方法需要在一个事务中运行,如归哦方 ... -
springJDBC + spring 事务属性
2014-11-01 23:48 411spring 事务传播属性 ... -
spring jersey整合后无法注入
2014-10-27 17:26 825spring jersey整合后无法注入 -
Spring什么时候实例化bean,首先要分2种情况
2014-08-28 17:59 819Spring什么时候实例化bean,首先要分2种情况 ... -
spring 设置切入点,在特定方法之前执行特定逻辑代码
2013-08-29 12:56 1044第一步 加入jar包 aspectjweaver.jar a ... -
spring 定时器
2013-07-18 11:34 1330第二种:使用注解形式 也许我们不想每写一个任务类还要在xml文 ... -
spring 中bean的生命周期
2013-07-15 22:38 982spring 中bean的生命周期是在bean的声明中通过sc ... -
spring mvc 经典入门
2013-07-09 18:05 1062现在主流的Web MVC框架除了Struts这个主力 外,其次 ...
相关推荐
Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...
在Spring中,IOC的主要实现方式有两种:依赖注入(Dependency Injection,简称DI)和基于接口的配置。下面将对这两种方式进行详细阐述。 一、依赖注入(Dependency Injection) 1. **构造器注入**:通过构造函数来...
在Spring中,有两种主要的属性注入方式:setter方法注入和构造器注入。 1. Setter方法注入:这是最常用的方式,通过在类中定义带有`set`前缀的方法,Spring容器会调用这些方法来设置依赖。例如: ```java public ...
2. **setter注入**:通过setter方法来设置依赖对象,Spring容器会在对象创建后调用setter方法注入依赖。这种方式更符合JavaBean规范,使得对象可以在无依赖的情况下被实例化,但在使用前需要注入依赖。 3. **接口...
2. setter方法注入:通过setter方法注入依赖对象,Spring容器会在对象创建后调用setter方法,设置依赖对象。 3. 接口注入:Spring提供了一种基于接口的注入方式,但这种方式在实际应用中较为少见,一般更多地使用...
2. **设值注入**:使用setter方法注入依赖。 3. **接口注入**:通过实现特定的接口注入依赖。 Spring容器会根据配置自动调用合适的注入方式,为对象注入其依赖。 **四、Spring配置** Spring Ioc容器的配置可以...
3. 注入依赖:当Bean需要使用到其他的Bean时,容器负责注入这些依赖,可以通过构造函数注入或者通过setter方法注入。 Spring IOC操作的详细步骤讲解截图可能会包含以下内容: 1. 创建Spring项目,并配置项目依赖...
依赖注入可以通过多种方式实现,包括构造器注入、setter注入和接口注入。在XML配置中,我们通常使用setter注入,如上述示例所示。构造器注入可以通过指定带有参数的构造函数来完成,而接口注入则涉及实现一个接口,...
依赖注入可以通过构造函数注入、setter方法注入或接口注入来实现,使得对象间的依赖关系在运行时动态地建立。 1. 构造函数注入:在类的构造函数中传入依赖的对象实例,这样在创建目标类实例时,依赖就已经被注入。 ...
它可以应用在字段、构造函数、setter方法和方法参数上。Spring会根据类型匹配(默认)或通过`@Qualifier`指定的bean名称来找到合适的依赖。 **四、@Qualifier注解** `@Qualifier`与`@Autowired`配合使用,用于在多...
在这个名为“Spring依赖注入使用setter设注入demo”的示例中,我们将深入探讨如何通过setter方法实现Spring的依赖注入。 首先,理解依赖注入的基本思想:对象之间的依赖关系不是由对象自身管理,而是由外部容器(在...
- 示例:`example4forSetter`可能是一个展示setter注入的例子,包含了注入依赖的setter方法,Spring容器会在初始化后调用这些方法注入依赖。 选择构造器注入还是setter注入取决于具体需求。构造器注入适用于核心...
2. **setter注入**:使用setter方法注入依赖。容器会在对象创建后调用setter方法来设置依赖。 3. **接口注入**:较少使用,通过实现特定接口来注入依赖,但Spring并不直接支持,通常需要自定义实现。 **Spring的...
构造器注入是在Bean实例化时通过构造函数传递依赖,而setter注入则是通过调用setter方法设置依赖。在`TestSpringIoc`中,可能会模拟不同的依赖注入场景,检查注入是否正确。 3. **Bean的生命周期管理**:Spring容器...
1. **降低耦合**:对象不再直接创建依赖,而是通过构造函数、setter方法或者注解来接收依赖,降低了类与类之间的耦合度。 2. **增强可测试性**:依赖注入使得我们可以轻松地替换对象的依赖,便于进行单元测试。 3. *...
构造器注入是在bean实例化时通过构造函数传递依赖,而setter注入则是通过调用setter方法设置依赖。 3. **bean的生命周期管理**:Spring容器负责bean的创建、初始化、使用和销毁。开发者可以通过定义初始化方法和...
在本资源"手写spring ioc(三) 资源org.zip"中,我们主要关注的是如何实现一个简易版的Spring IOC(Inversion of Control)容器,它涵盖了ioc的基本功能,包括解决循环依赖、使用构造器注入以及自动注入等核心特性。...
在Java开发中,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)容器。它极大地简化了组件之间的依赖管理,提高了代码的可测试性和可维护性。本篇文章将深入...
依赖注入有两种方式:设值注入(Setter Injection)和构造器注入(Constructor Injection)。Spring可以通过调用setter方法或构造器来注入依赖。 7. **AOP代理(AOP Proxy)** Spring通过AOP代理来实现对Bean的...
@Autowired 是 Spring 中最常用的注入方法之一,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 ...