- 浏览: 445622 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1297spring aop 配置时,需要多处配置切入表达式,这 ... -
spring aop 优先级
2014-11-08 15:43 862spring aop 横切面有多个时,涉及到 优先级问题。 ... -
spring aop 基于注解配置
2014-11-08 15:27 529spring aop 的作用是 1 每一个事务逻 ... -
spring bean 的基础配置
2014-11-08 00:05 604spring bean的配置包含 3种基本情况 1 ... -
spring 事务配置
2014-11-03 21:36 719spring 官方团队 建议我们使用注解方式 配置事务,这 ... -
spring 事务属性分类
2014-11-02 22:49 585required 业务方法需要在一个事务中运行,如归哦方 ... -
springJDBC + spring 事务属性
2014-11-01 23:48 391spring 事务传播属性 ... -
spring jersey整合后无法注入
2014-10-27 17:26 787spring jersey整合后无法注入 -
Spring什么时候实例化bean,首先要分2种情况
2014-08-28 17:59 784Spring什么时候实例化bean,首先要分2种情况 ... -
spring 设置切入点,在特定方法之前执行特定逻辑代码
2013-08-29 12:56 1007第一步 加入jar包 aspectjweaver.jar a ... -
spring 定时器
2013-07-18 11:34 1288第二种:使用注解形式 也许我们不想每写一个任务类还要在xml文 ... -
spring 中bean的生命周期
2013-07-15 22:38 940spring 中bean的生命周期是在bean的声明中通过sc ... -
spring mvc 经典入门
2013-07-09 18:05 1019现在主流的Web MVC框架除了Struts这个主力 外,其次 ...
相关推荐
Spring Ioc 注解 依赖注入
Spring 三种依赖注入方式.doc Spring 三种依赖注入方式.doc
IoC 依赖注入 技术总结 IoC 依赖注入 技术总结
Spring IOC的注入方式总结 ,具体效果和过程看博文http://blog.csdn.net/evankaka/article/details/44832305
今天有空,写了基于C#使用Spring.Net的演示实例,希望能给有需要的人带来帮助,其中演示了配置下的IOC、AOP、属性注入、构造函数注入、通知过滤器、以及不使用配置直接代码硬编的AOP动态代码过程,另外还增加了...
注入方式:有三种 第一种:使用构造函数提供(创建对象时,必须提供数据,否则无法创建成功) 使用的标签:constructor-arg 标签出现的位置:bean标签的内部 标签中的属性: type:用于指定要注入的数据的数据...
spring IOC容器依赖注入XML配置详解 运行环境:eclipse 构建工具:maven 不提供maven构建,maven用来解决jar包的依赖
IOC DI 一个spring4.2.0 spring setter 和构造 注入 的小例子
详细讲解了springioc的各种注入方式以及对应的java方式。讲解了springioc和DI的区别,以及注入特殊复杂的属性
Spring IOC Annotation 注入 学习实例
SpringIOC_泛型依赖注入,泛型依赖注入,注入一个组件的时候,他的泛型也是参考标准
NULL 博文链接:https://samter.iteye.com/blog/408519
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
spring ioc开发最小依赖包4个,还包含两个辅助包commons-logging.jar和log4j.jar
今天有空,写了基于C#使用Spring.Net的演示实例,希望能给有需要的人带来帮助,其中演示了配置下的IOC、AOP、属性注入、构造函数注入、通知过滤器、以及不使用配置直接代码硬编的AOP动态代码过程,另外还增加了...
Spring IOC之方法注入 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45022649
Spring源代码解析(一):IOC容器.doc
其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的...
模拟Spring IOC 自己实现依赖注入 自己的Spring 自己的代码模拟spring的依赖注入 自己写的 绝对独一无二
新型智慧城市(城市大脑IOC)建设项目方案参考:第三章 项目需求分析.pdf新型智慧城市(城市大脑IOC)建设项目方案参考:第三章 项目需求分析.pdf新型智慧城市(城市大脑IOC)建设项目方案参考:第三章 项目需求分析.pdf...