今天,小编将分享大家在学习Spring框架的时候都会遇到的xml配置实例的干货讲解。大家都应该知道,Spring提供的最基本功能是,对象无需自己查找或者创建与它相关联的其他对象,由容器负责将需要相互协作的对象引用传递给各个对象。如果如果没有配置,Spring只是一个没有任何作用的空容器。因此Spring提供了使用XML文件配置和使用注解配置Bean的方式。
1、一个Performer接口:
package springAction;
public interface Performer {
void perform();
}
2、一个Juggler类实现了Performer接口:
package springAction;
public class Juggler implements Performer{
private int beanBags = 3;
public Juggler(){
}
public Juggler(int beanBags){
this.beanBags = beanBags;
}
public void perform(){
System.out.println("Juggling " + beanBags + " beanbags");
}
}
3、一个 PoeticJuggler类继承了Juggler类:
package springAction;
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("PoeticJugger reciting...");
poem.recite();
}
}
4、一个Poem接口:
package springAction;
public interface Poem {
void recite();
}
5、一个单例类Stage:
package springAction;
public class Stage {
private Stage(){
}
private static class StageSingletonHolder{
static Stage instance = new Stage();
}
public static Stage getInstance(){
return StageSingletonHolder.instance;
}
}
6、看看xml文件怎么写(springAction.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!-- 配置一个bean -->
<bean id="duke" class="springAction.Juggler" >
<!--给构造函数传递参数,没有的话则调用默认构造方法 -->
<constructor-arg value="15"/>
</bean>
<bean id="sonnet29" class="springAction.Sonnet29"></bean>
<bean id="poeticDuke" class="springAction.PoeticJuggler">
<constructor-arg value="22"></constructor-arg>
<!-- 基本数据类型参数用value=字符串(Spring根据构造参数类型自动解析字符串),
引用类型的参数用ref= bean id -->
<constructor-arg ref="sonnet29"></constructor-arg>
</bean>
<!-- factory-method通过工厂方法将单例类配置为bean,因为Stage没有构造函数 -->
<bean id="theStage" class="springAction.Stage" factory-method="getInstance">
</bean>
</beans>
加个main函数运行一下,看看效果:
package springAction;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class springActionMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"springAction/springAction.xml");
try{
Performer performer = (Performer)ctx.getBean("duke");
performer.perform();
performer = (Performer)ctx.getBean("poeticDuke");
performer.perform();
}catch(Exception e){
e.printStackTrace();
}finally{
((ClassPathXmlApplicationContext)ctx).close();
}
}
}
7、bean的作用域
所有的Spring Bean默认是单例,当容器分配一个Bean时,它总是返回同一个实例。但,spring是灵活的,不需要单例模式时,可以如下配置:
<bean id="ticket" class="省略号" scope="prototype"/>
8、初始化Bean和销毁Bean
当Spring容器实例化一个Bean时可能需要做一些初始化的工作,当Spring销毁一个Bean时,可能需要做一些清理工作。Spring支持Bean提供自定义的方法来做初始化工作和销毁工作。
9、为Bean注入属性
一般地,java Bean会有一些私有属性,并有一些set和get方法。Spring可以利用set方法为bean的私有属性注入值。
例子:
package springAction;
public class Instrumentalist implements Performer{
private String song;
private Instrument instrument;
private int age;
public Instrumentalist(){
}
public void perform(){
System.out.println("age = " + age);
System.out.println("Playing "+song);
instrument.play();
}
public String getSong() {
return song;
}
public void setSong(String song) {
this.song = song;
}
public Instrument getInstrument() {
return instrument;
}
public void setInstrument(Instrument instrument) {
this.instrument = instrument;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
xml文件配置:
<bean id="saxophone" class="springAction.Saxophone"/>
<bean id="kenny" class="springAction.Instrumentalist">
<!-- 配置属性song -->
<property name="song" value="ABC"></property>
<!-- 配置属性age,虽然此处是字符串“14”,但是Spring会识别age的类型,然后把字符串“14”转变后赋值给age -->
<property name="age" value="14"></property>
<!-- 配置instrument对象,用ref的方式赋引用,和构造函数一致 -->
<property name="instrument" ref="saxophone"></property>
</bean>
以上就是Spring学习之xml配置实例的干货讲解,还有想学习Spring框架知识的小伙伴,可以上博学谷在线观看视频,相信会收获更多的干货知识哦!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
MC版本Java版5大功能优势
众所周知java开发应用广泛,Java版本被很多人认为是最好的MC版本,MC版本Java版5大功能优势有什么呢?Java版开发优势:支持更多的模组、各种节日彩蛋、官方更高的重视性、游戏画面色彩更好、操作更方便。
6287
2019-08-14 18:12:21
学Java需要数学好吗?数学基础差就不能学Java吗?
学Java需要数学好吗?数学基础差就不能学Java吗?其实想学Java的同学不必纠结于此,数学基础好固然能帮大家更快学好Java;但是数学基础差也不会太影响Java的学习,因此可以说学Java并没有对数学能力有什么要求。
5276
2019-08-28 17:54:56
SpringMVC面试题集锦
Spring MVC是spring框架的一个模块,是基于MVC的轻量级Web框架。Spring是目前Web开发中的一个很重要的部分。尤其在企业招聘相关开发者的时候,有大量的笔试和面试题目都与springMVC有关,下面是小编为大家整理的关于springMVC的一些面试题!
3497
2019-11-19 18:29:43
Java基础语法之注解学习笔记
在学习Java基础语法的时候,初学者常常会分不清注解与注释的区别。其实注解和注释是完全不一样的两个概念。简单来讲,注释就是方便自己或他人阅读代码,对编程思路或程序作用的解释说明。而注解则是代码里的特殊标记,是给编译器阅读的元数据。本文将为大家详细讲解一下Java基础语法中有关注解的相关知识点,需要学习的小伙伴可以跟着文章一起来梳理一遍知识点。
2638
2020-01-06 16:53:17
Spring AOP应用场景有哪些?Aop工作原理分析
Aop工作原理分析,面向切面编程,是通过代理的方式为程序添加统一功能,集中解决一些公共问题。应用在Debugging 调试、logging, tracing, profiling and monitoring 记录跟踪优化校准场景中。
5294
2020-09-02 11:08:42
热门文章
- 大数据的薪资怎么样?想学大数据了?
- 吐血整理的大数据学习资源大全
- 数据分析行业到底有多卷
- 传智教育在线课程助力职场升级,看IT人才如何破局职业瓶颈
- 传智教育博学谷赋能在职人群,推出系列公开课及大咖1对1聊技术
- 大数据开发的前景和就业如何?该如何去学习它?
- 成为架构师,读书之外什么更重要?
- 如何从Java工程师成长为架构师?
- 比较实用的大数据分析模型有哪些?
- Java原子操作之CAS原子指令学习 查看更多
扫描二维码,了解更多信息
