SSM框架笔记06:初探Spring——采用XML配置方式
2018-02-20 20:01
736 查看
初探Spring——采用XML配置方式
Spring框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring解决Java EE开发的所有问题。Spring框架主要提供了IoC容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。
Spring使用简单的POJO(Plain-Old Java Object,即无任何限制的普通Java对象)来进行企业级开发。每一个被Spring管理的Java对象都称之为Bean,而Spring提供了一个IoC容器来初始化对象,解决对象间的依赖和对象的使用。
IOC容器~DI(依赖注入)
我们通过案例来学习。
新建一个Maven项目,输入项目组标识符符与项目标识符:
指定项目名及位置:
在pom.xml文件里配置jar包依赖:
Spring管理Bean有三种方式:1、基于XML配置的方式2、基于注解的方式3、基于Java配置的方式
我们先学习基于XML配置的方式。
场景:勇敢的骑士去完成杀龙的任务。
按照面向对象的观点,要定义两个类:BraveKnight和SlayDragonQuest。
(1)创建杀龙任务SlayDragonQuest类
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/24.
*/
public class SlayDragonQuest {
public void embark() {
System.out.println("执行杀龙任务。");
}
}(2)创建勇敢骑士BraveKnight类
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/23.
*/
public class BraveKnight {
private SlayDragonQuest slayDragonQuest;
public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
this.slayDragonQuest = slayDragonQuest;
}
public void embarkOnQuest() {
slayDragonQuest.embark();
}
}回顾一下传统方式怎么使用这两个类。需要我们自己通过new实例化两个类,然后设置勇敢骑士对象的杀龙任务属性,然后调用勇敢骑士执行任务的方法。
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/24.
*/
public class TestBraveKnightOld {
public static void main(String[] args) {
// 创建杀龙任务对象
SlayDragonQuest slayDragonQuest = new SlayDragonQuest();
// 创建勇敢骑士对象
BraveKnight braveKnight = new BraveKnight();
// 设置勇敢骑士杀龙任务属性
braveKnight.setSlayDragonQuest(slayDragonQuest);
// 勇敢骑士执行任务
braveKnight.embarkOnQuest();
}
}运行TestBraveKnightOld程序:
下面我们让项目增加Spring功能。
在Project Structure对话框里,选中左面板列表中的Modules,添加Spring,如下图所示:
将以前项目中用的log4j.properties文件拷贝到resource目录。
在resources目录里创建子目录xmlconfig,新建一个Spring配置文件:
在配置文件里定义两个Bean:
(1)杀龙任务Bean
勇敢骑士Bean通过<property>元素将杀龙任务Bean注入作为其属性。注意,name属性值一定是Knight类的属性名,ref属性值是已定义的杀龙任务Bean的id值。
下面我们采用新方式来测试。创建TestBraveKnightNew类。
运行程序,结果如下图所示:
我们知道基于一个类可以创建多个对象,因此,在spring-config.xml文件里,也可以基于同一个类创建多个Bean。
比如我们基于BraveKnight类可以再创建两个Bean,id值分别为knight1和knight2。
修改TestBraveKnightNew类的代码:
程序运行结果如下:
勇敢骑士Bean采用属性注入方式将杀龙任务Bean注入作为其属性。
另外还有一种注入方式,叫做构造函数注入。我们同样通过案例来演示。
1、创建拯救少女任务RescueDamselQuest类
2、创建拯救少女之骑士DamselRescuingKnight类
通过构造方法来设置骑士要执行的任务。
<bean id="rescueDamselQuest" class="net.hw.spring.ch1.xmlconfig.RescueDamselQuest"/>
<bean id="damselRescuingKnight" class="net.hw.spring.ch1.xmlconfig.DamselRescuingKnight">
<constructor-arg ref="rescueDamselQuest"/>
</bean>4、创建测试类TestDamselRescuingKnight
package net.hw.spring.ch1.xmlconfig;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by howard on 2017/2/24.
*/
public class TestDamselRescuingKnight {
public static void main(String[] args) {
// 基于Spring配置文件创建应用容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
// 根据名称从应用容器中获取拯救少女之骑士对象
DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
// 拯救少女之骑士执行任务
damselRescuingKnight.embarkOnQuest();
// 关闭应用容器
context.close();
}
}运行结果如下:
思考一下,如果我们有几十个类要创建Bean,采用XML配置方式是不是会让Spring配置文件显得很臃肿,怎么解决这个问题呢?我们下一讲会引入注解方式来解决这个问题。
Spring框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring解决Java EE开发的所有问题。Spring框架主要提供了IoC容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。
Spring使用简单的POJO(Plain-Old Java Object,即无任何限制的普通Java对象)来进行企业级开发。每一个被Spring管理的Java对象都称之为Bean,而Spring提供了一个IoC容器来初始化对象,解决对象间的依赖和对象的使用。
IOC容器~DI(依赖注入)
我们通过案例来学习。
新建一个Maven项目,输入项目组标识符符与项目标识符:
指定项目名及位置:
在pom.xml文件里配置jar包依赖:
Spring管理Bean有三种方式:1、基于XML配置的方式2、基于注解的方式3、基于Java配置的方式
我们先学习基于XML配置的方式。
场景:勇敢的骑士去完成杀龙的任务。
按照面向对象的观点,要定义两个类:BraveKnight和SlayDragonQuest。
(1)创建杀龙任务SlayDragonQuest类
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/24.
*/
public class SlayDragonQuest {
public void embark() {
System.out.println("执行杀龙任务。");
}
}(2)创建勇敢骑士BraveKnight类
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/23.
*/
public class BraveKnight {
private SlayDragonQuest slayDragonQuest;
public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
this.slayDragonQuest = slayDragonQuest;
}
public void embarkOnQuest() {
slayDragonQuest.embark();
}
}回顾一下传统方式怎么使用这两个类。需要我们自己通过new实例化两个类,然后设置勇敢骑士对象的杀龙任务属性,然后调用勇敢骑士执行任务的方法。
package net.hw.spring.ch1.xmlconfig;
/**
* Created by howard on 2017/2/24.
*/
public class TestBraveKnightOld {
public static void main(String[] args) {
// 创建杀龙任务对象
SlayDragonQuest slayDragonQuest = new SlayDragonQuest();
// 创建勇敢骑士对象
BraveKnight braveKnight = new BraveKnight();
// 设置勇敢骑士杀龙任务属性
braveKnight.setSlayDragonQuest(slayDragonQuest);
// 勇敢骑士执行任务
braveKnight.embarkOnQuest();
}
}运行TestBraveKnightOld程序:
下面我们让项目增加Spring功能。
在Project Structure对话框里,选中左面板列表中的Modules,添加Spring,如下图所示:
将以前项目中用的log4j.properties文件拷贝到resource目录。
在resources目录里创建子目录xmlconfig,新建一个Spring配置文件:
在配置文件里定义两个Bean:
(1)杀龙任务Bean
<bean id="slayDragonQuest" class="net.hw.spring.ch1.xmlconfig.SlayDragonQuest"/>(2)勇敢骑士Bean
<bean id="braveKnight" class="net.hw.spring.ch1.xmlconfig.BraveKnight"> <property name="slayDragonQuest" ref="slayDragonQuest"/> </bean>id属性:对应对象名,可以任取,我们可以通过这个id值从Spring容器中获取Bean对象。class属性:表明Bean对象是基于哪个类来实例化。
勇敢骑士Bean通过<property>元素将杀龙任务Bean注入作为其属性。注意,name属性值一定是Knight类的属性名,ref属性值是已定义的杀龙任务Bean的id值。
<?xml version="1.0" encoding="UTF-8"?>通过Spring配置文件,我们创建了两个Bean,它们之间存在依赖关系。
<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.xsd">
<bean id="slayDragonQuest" class="net.hw.spring.ch1.xmlconfig.SlayDragonQuest"/>
<bean id="braveKnight" class="net.hw.spring.ch1.xmlconfig.BraveKnight"> <property name="slayDragonQuest" ref="slayDragonQuest"/> </bean>
</beans>
下面我们采用新方式来测试。创建TestBraveKnightNew类。
package net.hw.spring.ch1.xmlconfig; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Created by howard on 2017/2/24. */ public class TestBraveKnightNew { public static void main(String[] args) { // 基于Spring配置文件创建应用容器 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml"); // 根据名称从应用容器中获取勇敢骑士对象 BraveKnight braveKnight = (BraveKnight) context.getBean("braveKnight"); // 勇敢骑士执行任务 braveKnight.embarkOnQuest(); // 关闭应用容器 context.close(); } }说明:首先通过Spring配置文件创建Spring应用容器,然后就可以利用容器的getBean方法通过名称获取容器里的Bean对象,然后调用该对象的方法。
运行程序,结果如下图所示:
我们知道基于一个类可以创建多个对象,因此,在spring-config.xml文件里,也可以基于同一个类创建多个Bean。
比如我们基于BraveKnight类可以再创建两个Bean,id值分别为knight1和knight2。
修改TestBraveKnightNew类的代码:
程序运行结果如下:
勇敢骑士Bean采用属性注入方式将杀龙任务Bean注入作为其属性。
另外还有一种注入方式,叫做构造函数注入。我们同样通过案例来演示。
1、创建拯救少女任务RescueDamselQuest类
2、创建拯救少女之骑士DamselRescuingKnight类
通过构造方法来设置骑士要执行的任务。
package net.hw.spring.ch1.xmlconfig; /** * Created by howard on 2017/2/24. */ public class DamselRescuingKnight { private RescueDamselQuest rescueDamselQuest; public DamselRescuingKnight(RescueDamselQuest rescueDamselQuest) { this.rescueDamselQuest = rescueDamselQuest; } public void embarkOnQuest() { rescueDamselQuest.embark(); } }3、修改Spring配置文件spring-config.xml
<bean id="rescueDamselQuest" class="net.hw.spring.ch1.xmlconfig.RescueDamselQuest"/>
<bean id="damselRescuingKnight" class="net.hw.spring.ch1.xmlconfig.DamselRescuingKnight">
<constructor-arg ref="rescueDamselQuest"/>
</bean>4、创建测试类TestDamselRescuingKnight
package net.hw.spring.ch1.xmlconfig;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by howard on 2017/2/24.
*/
public class TestDamselRescuingKnight {
public static void main(String[] args) {
// 基于Spring配置文件创建应用容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
// 根据名称从应用容器中获取拯救少女之骑士对象
DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
// 拯救少女之骑士执行任务
damselRescuingKnight.embarkOnQuest();
// 关闭应用容器
context.close();
}
}运行结果如下:
思考一下,如果我们有几十个类要创建Bean,采用XML配置方式是不是会让Spring配置文件显得很臃肿,怎么解决这个问题呢?我们下一讲会引入注解方式来解决这个问题。
相关文章推荐
- SSM框架笔记07:初探Spring——采用XML配置文件与注解方式
- SSM框架笔记08:初探Spring——采用配置类与注解方式
- SSM框架笔记09:初探Spring——采用Java配置方式
- SSM框架笔记15:SSM框架西蒙购物网(XML配置方式)
- spring学习笔记12----Spring+jdbc组合开发( 采用基于xml方式配置事务)
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
- Spring4 学习笔记(3)-Spring 基于 XML 的方式配置 Bean
- spring采用基于xml配置方式进行事务的处理
- java注解方式(不用xml)配置web框架spring+SpringMVC
- Spring 采用基于XML方式配置事务
- SSM框架笔记11:Spring常用配置与高级话题
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
- maven搭建ssm框架之spring容器(applicationContext.xml)配置
- 13、SSM框架-Spring 使用注解方式配置声明式事务(13)
- SpringMVC经典系列-03基于Spring2.5采用XMl配置的方式进行项目开发---【LinusZhu】
- 【SSM】:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
- Spring之AOP声明式事务管理(采用xml的配置方式更好)
- JAVA_WEB项目之使用Spring的xml配置方式在项目中管理Lucene检索框架
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释