学习的Spring实战(第三版)Bean的简单应用
1.创建一个表演者的接口
package com.performer.service;
public interface Performer {
void perform();
}
2.创建一个杂技师表演者Bean,杂技师空中抛球(beanBags),抛的越多越厉害,默认有3个
package com.performer.service.impl;
import com.performer.service.Performer;
public class Juggler implements Performer {
private int beanBags = 3;
public Juggler() {
}
public Juggler(int beanBags) {
this.beanBags = beanBags;
}
@Override
public void perform() {
System.out.println("Juggler "+beanBags+" beanBags");
}
}
3.配置文件Spring1.xml中加载Bean,实例化杂技师(Duke)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="duke" class="com.performer.service.impl.Juggler">
</bean>
</beans>
4.加载配置文件Spring1.xml,测试Duke,输出他拥有的beanBags
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.performer.service.impl.Juggler;
public class SpringTest {
public static void main(String []args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring1.xml");
Juggler juggle = (Juggler) context.getBean("duke");
juggle.perform();
}
}
5.测试结果,如下所示
6.通过构造器,让Duke拥有15个beanBags,配置文件如下
<bean id="duke" class="com.performer.service.impl.Juggler">
<constructor-arg value="15"></constructor-arg>
</bean>
</beans>
7.加载配置文件Spring2.xml,测试Duke,输出他拥有的beanBags
public class SpringTest { public static void main(String []args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring2.xml"); Juggler juggle = (Juggler) context.getBean("duke"); juggle.perform(); } }
8.测试结果如下所示
现在创建一个会唱诗歌的杂技师
9.创建诗歌借口
package com.poem.service; public interface Poem { void recite(); }
10.创建一首诗
package com.poem.service.impl; import com.poem.service.Poem; public class Sonnet implements Poem { Sonnet() { } private String[] s={"百日依山尽","黄河入海流","欲穷千里目","更上一层楼"}; @Override public void recite() { for(int i=0;i<s.length;i++) { System.out.println(s[i]); } } }
11.创建会朗诵诗歌的杂技师PoeticJuggler
package com.performer.service.impl; import com.poem.service.Poem; public class PoeticJuggler extends Juggler { private Poem poem; public PoeticJuggler(Poem poem) { super(); this.poem = poem; } public PoeticJuggler(int beanBags,Poem poem) { super(beanBags); this.poem = poem; } public void perform() { super.perform(); System.out.println("while reciting..."); poem.recite(); } }
12.将诗歌给Duke,让Duke成为PoeticJuggler,配置文件如下
<bean id="duke" class="com.performer.service.impl.PoeticJuggler"> <constructor-arg value="15"></constructor-arg> <constructor-arg ref="sonnet"></constructor-arg> </bean> <bean id="sonnet" class="com.poem.service.impl.Sonnet"></bean>
13.加载Spring3.xml,进行测试,查看结果Duke成为会诗歌的杂技师
public class SpringTest { public static void main(String []args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring3.xml"); Juggler juggle = (Juggler) context.getBean("duke"); juggle.perform(); } }
14.运行结果如下所示
其它装配Bean的写法,如下
15.注入简单值,见Spring4.xml
<bean id="jake" class="com.performer.service.impl.Instrumentalist"> <property name="song" value="small star"></property> </bean>
16.引用其他Bean,见Spring5.xml
<bean id="jake" class="com.performer.service.impl.Instrumentalist"> <property name="song" value="small star"></property> <property name="instrument" ref="piano"></property> </bean> <bean id="piano" class="com.instrument.service.impl.Piano"></bean>
17.注入内部Bean,见Spring6.xml和Spring7.xml
<bean id="jake" class="com.performer.service.impl.Instrumentalist"> <property name="song" value="small star"></property> <property name="instrument"> <bean class="com.instrument.service.impl.Saxophone"></bean> </property> </bean> <bean id="saxophone" class="com.instrument.service.impl.Saxophone"></bean>
<bean id="duke" class="com.performer.service.impl.PoeticJuggler"> <constructor-arg value="15"></constructor-arg> <constructor-arg > <bean class="com.poem.service.impl.Sonnet"></bean> </constructor-arg> </bean>
18.使用Spring命名空间p装配属性Spring8.xml
19.装配集合
<bean id="hank" class="com.performer.service.impl.OneManBand"> <property name="instruments" > <!-- 使用set --> <!-- <set> <ref bean="guitar"/> <ref bean="piano"/> <ref bean="saxophone"/> </set> --> <!-- 使用list --> <!-- <list> <ref bean="guitar"/> <ref bean="piano"/> <ref bean="saxophone"/> </list> --> <!-- 使用map --> <map> <entry key="GUITAR" value-ref="guitar"></entry> <entry key="PIANO" value-ref="piano"></entry> <entry key="SAXOPHONE" value-ref="saxophone"></entry> </map> <!-- 使用props --> <!-- <props> <prop key="GUITAR">wing wing wing...</prop> <prop key="PIANO">ding ding ding...</prop> <prop key="SAXOPHONE">plink plink plink...</prop> </props> --> </property> </bean> <bean id="guitar" class="com.instrument.service.impl.Guitar"></bean> <bean id="saxophone" class="com.instrument.service.impl.Saxophone"></bean> <bean id="piano" class="com.instrument.service.impl.Piano"></bean>
20.测试装配集合
public class OneManBand implements Performer { public OneManBand() { } /*使用list*/ private List<Instrument> instruments; @Override public void perform() { for(Instrument instrument : instruments) { instrument.play(); } } public List<Instrument> getInstruments() { return instruments; } public void setInstruments(List<Instrument> instruments) { this.instruments = instruments; } /*使用Map*/ /*private Map<String,Instrument> instruments; @Override public void perform() { for(String key : instruments.keySet()) { System.out.print(key+":"); Instrument instrument = instruments.get(key); instrument.play(); } } public Map<String,Instrument> getInstruments() { return instruments; } public void setInstruments(Map<String,Instrument> instruments) { this.instruments = instruments; }*/ /*使用Collection*/ /*private Collection<Instrument> instruments; @Override public void perform() { for(Instrument instrument : instruments) { instrument.play(); } } public Collection<Instrument> getInstruments() { return instruments; } public void setInstruments(Collection<Instrument> instruments) { this.instruments = instruments; }*/ }
21.运行结果如下所示
相关推荐
spring管理bean应用实例代码;spring管理bean应用实例代码
NULL 博文链接:https://bijian1013.iteye.com/blog/2384411
主要介绍了Spring Bean的初始化和销毁,结合实例形式详细分析了Spring Bean的初始化和销毁相关配置、使用方法及操作注意事项,需要的朋友可以参考下
NULL 博文链接:https://88548886.iteye.com/blog/1682243
3、通过spring的xml bean配置或bean注解指定初始化方法,如下面实例的initMethod方法通过@bean注解指定。 销毁的时候实现的方法 1、通过java提供的@PreDestroy注释; 2、通过实现spring提供的DisposableBean接口,并...
Spring IOC和DI概述,Bean的配置形式,IOC容器BeanFactory和ApplicationContext概述,依赖注入的方式,属性注入,构造器注入等案例
spring运行过程中动态注册bean,代码实例
Spring项目bean实例化代码,包括bean是如何创建的;实例化bean的三种方式,构造方法,静态工厂和实例工厂。
通过实例工厂方法和静态工厂方法实例化spring bean的例子。
Spring的三种实例化Bean的方式
JSP 中Spring Bean 的作用域详解 Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1>singleton: 单例模式,在整个spring IOC容器中,单例模式作用域...这种作用域只有在Web应用中使用Spring容
博客地址:https://blog.csdn.net/u010476739/article/details/76732201 spring装配bean的方式实例
主要介绍了Spring bean对象实例化实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
如果bean的作用域的属性被声明为 singleton, 那么Spring Ioc容器只会创建一个共享的bean实例。对于所有的bean请求,只要id与该bean定义的相匹配,那么Spring在每次需要时都返回同一个bean实例。 Singleton是单例...
JavaEE spring半自动bean管理事务案例
Spring的简单实例代码。通过XML文件设置bean。
实例主要讲述了,Spring的Xml(list,set,map)怎样进行注入值
主要介绍了spring装配bean方法实例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Spring Bean管理注解方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下