60 seconds to Spring (3)

转载 2004年07月06日 23:26:00

60 sec to Spring [TOC]

ruler.gif

Bean Tutorial 3 - Setter-Based and Construction-Based Dependency Injection

Inversion of Control/Dependency Injection exists in two major variants:

  • Setter-based dependency injection is realized by calling setters on your beans after invoking a no-argument constructor to instantiate your bean. Beans defined in the BeanFactory that use setter-based dependency injection are true JavaBeans. Spring generally advocates usage of setter-based dependency injection, since a large number of constructor arguments can get unwieldy, especially when some properties are optional.

  • Constructor-based dependency injection is realized by invoking a constructor with a number of arguments, each representing a collaborator or property.


Step 1: We will need two dummy classes for our tutorial, AnotherBean.java and YetAnotherBean.java.

org/jarchitect/spring/tutorial3/AnotherBean.java

org/jarchitect/spring/tutorial3/YetAnotherBean.java

Step 2: We will create a ConstructorExampleBean and a SetterExampleBean.

org/jarchitect/spring/tutorial3/ConstructorExampleBean.java

org/jarchitect/spring/tutorial3/SetterExampleBean.java

Step 3: Specify the HelloBean class in the bean.xml

bean.xml

        <beans>                                       </beans>

Step 4: reate a Main.java in src

org/jarchitect/spring/tutorial3/Main.java

                                                     

Step 5: Use an ANT script to build and execute the Main class. Just run ant from the command prompt will do the trick.

Below are the output from ANT.

                          

Overtime

From bean.xml

......              

Notice the index="2", try removing it and run ANT again. You will have the following error.

....... [java] INFO: Creating shared instance of singleton bean 'constructorBean' [java] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'constructorBean' defined in (no description): 3 constructor arguments specified but no matching constructor found in bean 'constructorBean'(hint: specify index arguments for simple parameters to avoid type ambiguities) [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory. autowireConstructor(AbstractAutowireCapableBeanFactory.java:287) [java] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFactory.java:181) [java] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:159) [java] at org.jarchitect.spring.tutorial3.Main.main(Unknown Source) [java] Exception in thread "main" [java] Java Result: 1 BUILD SUCCESSFUL Total time: 1 second

Reason: The argument is an int, but BeanFactory take it as a String, so the mapping isn't obvious to the matching algorithm. In case of primitives, it's recommended to specify the argument index explicitly.

More Reason: For example, constructors MyClass(bool flag, String toto, int moo, float cow). There is no way for the BeanFactory to tell which is which from the string representations of each.

Next, try swapping

   

and run ANT.

Done.

[TOC]

_00011 Redis 安装以及快速入门之一(Redis安装)

# Redis # Redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...
  • u012185296
  • u012185296
  • 2014年06月03日 17:38
  • 1067

OpenVPN莫名其妙断线的问题及其解决

1.问题不得不说,这是一个OpenVPN的问题,该问题几乎每个使用OpenVPN的人都碰到过,也有很多人在网上发问,然而一直都没有人能给出解决办法,甚至很多帖子上表示因为这个问题而放弃了使用OpenV...
  • dog250
  • dog250
  • 2013年07月27日 15:13
  • 58594

Android音频系统探究——从SoundPool到AudioHardware

对音频系统的探索起源于工作中遇到的一个bug。平时都是力求快速解决问题,不问原因。这次时间比较宽裕,正好借着解决问题的机会,把Android的音频系统了解一下。既然由bug引发,那就从bug开始说。 ...
  • tronteng
  • tronteng
  • 2013年12月12日 16:24
  • 1332

IP问题导致salt-stack系统异常

1. salt-master的IP不通      比如salt-master节点网线掉了,或者当前masterIP漂移过,网卡的mac地址变了,但是salt-minion节点自身的arp表没有更新。 ...
  • computerms
  • computerms
  • 2016年04月13日 14:08
  • 1536

[数据结构]查找(三)

第九章 查找 9.2 动态查找表 三、B - 树 1.B-树的定义 B-树是一种 平衡 的 多路 查找 树:...
  • wzhCAlex
  • wzhCAlex
  • 2016年10月12日 14:12
  • 221

3.5模拟赛题解

今天模拟赛了,不幸的是两道水题不知原因的爆〇了,只有90分,差点因缺斯厅。写一下题解锻炼一下。大牛有新算法欢迎交流。 About T1 题意: 对于每个字符串,最少可以在字符串最后加多少个字符,...
  • WTLTW
  • WTLTW
  • 2016年03月06日 14:11
  • 176

Spring定时任务注解说明

一、注解说明。 Spring 自带的定时任务执行@Scheduled注解,可以定时的、周期性的执行一些任务。查看@Scheduled的注解可以看到有以下三种: 1.1 String cron() ...
  • DanLei824
  • DanLei824
  • 2016年08月08日 10:33
  • 5516

菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

做WEB开发,测试是一件很费时间的事情。
  • liushuijinger
  • liushuijinger
  • 2014年05月30日 08:07
  • 3414

JMeter之Ramp-up Period(in seconds)说明(可同时并发)

Ramp-up Period(in seconds) 【1】决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行...
  • sunwangdian
  • sunwangdian
  • 2016年02月25日 16:51
  • 21447

JSONObject转换JSON--将Date转换为指定格式

项目中,经常会用JSONObject插件将JavaBean或List转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObjec...
  • dcb_ripple
  • dcb_ripple
  • 2016年04月01日 16:59
  • 597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:60 seconds to Spring (3)
举报原因:
原因补充:

(最多只允许输入30个字)