一个完成的spring xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="duke" class="com.springinaction.springidol.Juggler" >
<!-- 通过构造方法设置属性值 -->
<constructor-arg value="15"></constructor-arg>
</bean> <bean id="sonnect29" class="com.springinaction.springidol.Sonnet29"></bean> <bean id="poeticPoem" class="com.springinaction.springidol.PoeticJuggler">
<constructor-arg value="15"></constructor-arg>
<constructor-arg ref="sonnect29"></constructor-arg>
</bean> <!-- 建立一个Instrumentalist bean
@通过property为bean设置属性值,一旦instrumentalist被实例化,则对象会被赋此值
-->
<bean id="Kenny" class="com.springinaction.springidol.Instrumentalist">
<property name="song" value="Jingle Bells"></property>
<property name="age" value="37"></property> <!-- 这种做法可以实现接口与类的松耦合,比如下面两个都实现了Instrument接口的乐器类,Kenny bean可以随意引用 -->
<!--
<property name="instrument" ref="saxphone"></property>
<property name="instrument" ref="piano"></property>
-->
<!-- 内部bean的使用方式,这里用在property,constructor里面也是一样用 -->
<property name="instrument">
<bean class="com.springinaction.springidol.piano"></bean>
</property>
</bean> <bean id="saxphone" class="com.springinaction.springidol.saxphone"></bean>
<bean id="piano" class="com.springinaction.springidol.piano"></bean> <!-- p命名空间用法 -->
<bean id="Kenny2" class="com.springinaction.springidol.Instrumentalist"
p:song="Lemon Tree" p:age="30" p:instrument-ref="saxphone" >
</bean> <!-- 为集合配置bean -->
<bean id="hank" class="com.springinaction.springidol.OneManBand">
<property name="instruments">
<list>
<ref bean="piano" />
<ref bean="saxphone" />
</list>
</property>
<property name="instruments2">
<map>
<entry key="piano" value-ref="piano"></entry>
<entry key="saxphone" value-ref="saxphone"></entry>
</map>
</property>
</bean> <!-- properties的写法 -->
<bean id="hank2" class="com.springinaction.springidol.OneManBand">
<property name="instruments">
<props>
<!-- key和value都为String -->
<prop key="piano">la la la</prop>
<prop key="saxphone">ta ta ta</prop>
</props>
</property>
</bean> <!-- 赋null值 -->
<!--
...
<property name="xxx"><null/></property>
...
-->
</beans>
package com.springinaction.springidol; /**
*
* @author Alan.chen
* @定义表演者
* @类型:接口
*/ public interface Proformer {
void perform() throws Exception;
}
package com.springinaction.springidol;
public interface Instrument {
public void play();
}
package com.springinaction.springidol;
public class saxphone implements Instrument {
public saxphone() {
}
@Override
public void play() {
System.out.println("toot toot toot");
}
}
package com.springinaction.springidol;
public class piano implements Instrument {
public piano(){
}
@Override
public void play() {
System.out.println("弹得一手好琴。。。");
}
}
package com.springinaction.springidol; /**
*
* @author Alan.chen
* @诗人实现类
*/
public class Sonnet29 implements Poem { private static String[] LINES = {
"When in disgrace with fortune and men's eyes,",
"I all alone beweep my outcast state,",
"And trouble deaf heaven with my bootless cries,",
"And look upon myself, and curse my fate,",
"Wishing me like to one more rich in hope,",
"Featured like him, like him with friends posses'd,",
"Desiring this man's art, and that man's scope,",
"With what I most enjoy contented least;",
"Yet in these thoughts myself almost despising,",
"Haply I think on thee,-and then my state",
"(Like to the lark at break of day arising From sullen earth) sings hymns at heaven's gate;",
"For thy sweet love remember'd , such wealth brings,",
"That then I scorn to change my state with kings.!"
}; Sonnet29(){ } @Override
public void recite() {
for(int i=0;i<LINES.length;i++)
System.out.println(LINES[i]);
} }
package com.springinaction.springidol; /**
*
* @author Alan.chen
* @注入Bean属性示例,用setXXX(),getXXX()接收
* @描述:Instrumentalist,演奏家
*/
public class Instrumentalist implements Proformer { public Instrumentalist() {
} private int age; public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public void perform() throws Exception {
System.out.println("playing "+song+" : ");
instrument.play();
} private String song;
public void setSong(String song){
this.song = song;
} public String getSong(){
return song;
} public String screamSong(){
return song;
} private Instrument instrument;
public void setInstrument(Instrument instrument){
this.instrument = instrument;
} }
package com.springinaction.springidol; import java.util.Collection;
import java.util.Map; public class OneManBand implements Proformer { public OneManBand() {
} @Override
public void perform() throws Exception {
for(Instrument instrument:instruments)
instrument.play();
for(String key:instruments2.keySet()){
System.out.println(key + " : ");
Instrument instrument = instruments2.get(key);
instrument.play();
}
} //当被注入的对象时集合时
private Collection<Instrument> instruments; public Collection<Instrument> getInstruments() {
return instruments;
} public void setInstruments(Collection<Instrument> instruments) {
this.instruments = instruments;
} //当被注入的对象是map时
private Map<String,Instrument> instruments2; public Map<String, Instrument> getInstruments2() {
return instruments2;
} public void setInstruments2(Map<String, Instrument> instruments2) {
this.instruments2 = instruments2;
} //当被注入的map的key和value都是String时,可以用properties来代替map
//private Properties instruments3;
// public void setInstruments3(Properties instruments2) {
// this.instruments2 = instruments3;
// } }
package com.springinaction.springidol; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"com/springinaction/springidol/spring-idol.xml");
// Proformer performer = (Proformer)ctx.getBean("duke");
// Proformer performer = (Proformer)ctx.getBean("poeticPoem");
// Proformer performer = (Proformer)ctx.getBean("Kenny2");
Proformer performer = (Proformer)ctx.getBean("hank");
try {
performer.perform();
} catch (Exception e) {
e.printStackTrace();
}
}
}
一个完成的spring xml配置文件的更多相关文章
- spring*.xml配置文件明文加密
spring*.xml配置文件明文加密 说明:客户要求spring*.xml中Oracle/Redis/MongoDB的IP.端口.用户名.密码不能明文存放,接到需求的我,很无奈,但是还是的硬着头皮搞 ...
- Eclipse创建Spring XML配置文件插件
引用:https://www.cnblogs.com/lideqiang/p/9067219.html 第一步:在 Eclipse Marketplace仓库中,搜索sts 第二步:安装Spring ...
- Spring XML配置文件无法自动提示 eclipse中XML配置文件open with打开方式选择 XML Editor:注意它的编辑方式也是有两种的design和source
双击XML配置文件,如果打开方式不正确 则如下图: 都是灰色显示,不会有自动提示,也不会有颜色标注 右击XML配置文件,选择打开方式为XML Editor,则会有颜色标注 如果此时没有自动提示 则要手 ...
- Spring XML配置文件示例(二)——web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" ...
- 03SpringMvc_自定义的spring.xml配置文件和逻辑视图名
这篇文章的目的是实现Struts2中一种形式(封装视图的逻辑名称),在Struts2中Action处理后会返回"SUCCESS"这样,然后根据"SUCCESS" ...
- spring xml 配置文件中标签的解析
一个springmvc配置文件的例子为: <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...
- spring框架-spring.xml配置文件
运行的时候会报错的,因为写到<bean>标签里面去了,肯定会报错的,要记得把注释删掉,就不会报错了,这样写注释是为了方便下次自己看. <?xml version="1.0& ...
- 4.Spring——xml配置文件
如果使用Maven构建项目,spring在加载xsd文件时总是先试图在本地查找xsd文件(spring的jar包中已经包含了所有版本的xsd文件), 如果没有找到,才会转向去URL指定的路径下载.ap ...
- [spring]xml配置文件中的"classpath:"与"classpath*:"的区别
<bean id="sessionFactorySaas" class="org.mybatis.spring.SqlSessionFactoryBean" ...
随机推荐
- USB设备被识别流程【转】
转自:http://blog.csdn.net/myarrow/article/details/8286876 USB模块包括usb core,host,hub,device驱动,其中hub会启动一个 ...
- 说一下怎么搭建外网来访问SVN服务器
一.搭建SVN服务器 1.所需软件 TortoiseSVN,下载地址http://tortoisesvn.net/downloads.html TortoiseSVN中文语言包,下载地址http:// ...
- linux定时任务-cron
/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 ...
- 使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间。
使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间. 效果图: 哎,今天就又这么过去了,过的可真快 . 代码如下,复制即可使用: <!DOCTYPE html> & ...
- Git系统学习网址
https://code.csdn.net/help/CSDN_Code/progit/zh/07-customizing-git/01-chapter7
- cuowu
ngFor不能用于Object rowspan colspan不能绑定变量,要用attr.colspan https://stackoverflow.com/questions/35615751/wh ...
- 20155225 实验二《Java面向对象程序设计》实验报告
20155225 实验二<Java面向对象程序设计>实验报告 一.单元测试 三种代码 知道了伪代码.产品代码.测试代码的关系和用途,并根据老师的例子,按测试代码调试了产品代码. 值得注意的 ...
- Rewrite HTTP to HTTPS in Nginx
1.推荐配置 server { listen 80; server_name example1.com example2.com; return 301 https://$host$request_u ...
- 基于CommonsChunkPlugin,webpack打包优化
前段时间一直在基于webpack进行前端资源包的瘦身.在项目中基于路由进行代码分离,http://www.cnblogs.com/legu/p/7251562.html.但是打包的文件还是很大,特别是 ...
- mongo体系架构学习
MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的跨平台性,在不同的操作系统上虽然略有差别,但是从整体架构上来看,MongoDB在不同的平台上是一样的,如数据逻辑结构和数据 ...