开启 Spring 之旅:第一个 Spring 程序 ![Spring][Eclipse 使用 Spring][Eclipse 配置 Spring 约束文件][Eclipse 配置 xml 模版]

您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

具体案例:演示 IoC 容器的使用

通过具体实例演示 IoC 容器的使用,步骤如下所示。
本文使用的开发工具为:

Eclipse IDE for Enterprise Java Developers.

Version: 2018-12 (4.10.0)
Build id: 20181214-0600

第一步:创建工程项目

工程项目是基础。在 Eclipse 中创建 Web 项目spring-demo

将 Spring 框架所需的 JAR 包复制到项目的 lib 目录中,并将其添加到类路径下(选中每个 jar 包 → 右键 → Build Path → Add to Build Path),添加后的项目如下图所示:
在这里插入图片描述

第二步:创建实现类

创建交给 Spring 来实例化的实现类。通常先创建 Dao 接口,再创建 Dao 接口的实现类。

(1)先创建 Dao 接口

在项目的 src 目录下创建一个名为 com.manongajie.dao 的包,在该包中创建一个名为 UserDao 的接口,并在接口中添加一个 add() 抽象方法,如下所示:

package com.manongajie.dao;

/**
 * Dao 接口(演示用)
 * 
 * @author manongajie
 *
 */
public interface UserDao {

	public void add();
}

(2)创建 Dao 接口的实现类 UserDaoImpl

com.manongajie.ioc 包下创建 UserDao的实现类 UserDaoImpl,代码如下所示:

package com.manongajie.ioc;

import com.manongajie.dao.UserDao;

public class UserDaoImpl implements UserDao {

	@Override
	public void add() {
		// TODO Auto-generated method stub
		System.out.println("添加了一个 user 。");
	}

}

第三步:创建 Spring 配置文件

1 配置 Spring 约束

1.1 Spring 约束概述

Spring 本身是基于 xml 配置来工作的,在使用 Spring 的过程中不可避免的要编写大量 xml 配置,Spring 官方提供了这些 xml 文件的编写规范,这是通过提供 xml 的约束文件来实现的。

简单理解, xml 的约束其实是一种限定 xml 文件写法的技术,主要分为两种:

  • DTD,通常文件的后缀.dtd
  • Schema,通常文件的后缀为.xsd

Spring 提供了 Schema 格式的约束,来限定 Spring 配置文件的写法。

1.2 将 Spring 的约束文件交给 Eclipse 管理

开发者可以通过阅读 Spring 提供的约束文件来了解 Sprinig 的 xml 配置的写法。

但是,这么整的话会很麻烦,所以,通常我们会将约束文件交给开发工具管理(本文用的是 Eclipse),开发工具可以通过解析约束文件了解 xml 的写法,并在需要时为开发者提供标签提示。

如何将 Spring 的约束文件(这里只整 Spring beans 的约束文件)交给 Eclipse 来管理呢?

请参见以下步骤,

(1)找到 Spring 的约束文件,路径为:\spring-5.2.6.RELEASE-dist\spring-framework-5.2.6.RELEASE\schema\beans。一步步打开存放 Spring 框架的目录spring-framework-5.2.6.RELEASE,如下图所示:

在这里插入图片描述
打开此目录,如下图所示:

在这里插入图片描述
再打开schema目录,如下图所示:

在这里插入图片描述
再打开beans目录,就找到 Spring beans 约束文件了。如下图所示:

在这里插入图片描述
(2)打开 Eclipse 的 /Window/Preferences ,配置其中的XML Catalog,如下图所示:

在这里插入图片描述
找到上图中的 ③ 按钮“Add”,点击在新弹出的选项卡中导入上一步找到的spring-beans.xsd文件,并设置好名称空间,通常是在自动识别的名称空间之后再加上/文件名/spring-beans.xsd),点击OK即可。如下图所示:

在这里插入图片描述

2 配置 xml 模版,用来快速生成 xml 文件

xml 文件模版代码,可以去官网获取,不同版本的 Spring 框架,配置文件头约束的写法是不同的,建议去官网获取。如下所示(spring 5.2.6 版本):

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="...">  
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

由于 Eclipse 不会自动生成如上所示的 xml 文件(至少本人所安装的 Eclipse 没有自动生成),需要手动敲写代码,可以看出来,一般人真记不住,得复制粘贴,比较麻烦。经常要用到的话,还是配置一个 xml 模版比较好,可以快速生成 所需的 xml 文件。

配置 xml 模版步骤如下所示:

(1)在 Eclipse 中的/Window/Preferences中配置新模版,如下图所示:

在这里插入图片描述
(2)点击New 按钮,进入到New Template选项框中,进行设置模版,全部搞定之后,点击OK即可。如下图所示:

在这里插入图片描述

3 创建 Spring 配置文件(使用 xml 模版)和编写配置文件内容

3.1 创建 Spring 配置文件(使用 xml 模版)

src 目录下创建 Spring 的核心配置文件 applicationContext.xml(这个 xml 文件名是可以自定义的),如下图所示:

在这里插入图片描述
选中我们提前创建好的模版,确定之后,如下图所示:

在这里插入图片描述

3.2 编写配置文件内容

applicationContext.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 2 到 5 行是 Spring 的约束配置 -->
	
    <!-- 由 Spring 容器创建该类的实例对象:bean spring 管理的类都称为 bean
    	id 表示文件的唯一标识,不能重复,“驼峰命名法”首字母小写;
    	class 表示指定需要实例化的 Bean 的全限定类名(包名+类名)。 -->
    	
	<bean id="userDaoImpl" class="com.manongajie.ioc.UserDaoImpl"></bean>
	
	<!-- 还可以设置别名标签:通过 IoC 容器获取 userDao 实例。applicationContext.getBean("user") -->
	<alias name="userDaoImpl" alias="user"></alias>
	
</beans>

第四步:编写测试类

com.manongajie.test 包下创建测试类 SpringTest1,并在该类中添加一个名为 test1() 的方法,代码如下所示:

package com.manongajie.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.manongajie.dao.UserDao;

public class SpringTest1 {
	@Test
	public void test1() {
		
		// 定义Spring配置文件的路径
		String xmlPath = "applicationContext.xml";
		
		// 初始化 Spring 容器,加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
		
		// 通过 IoC 容器获取 userDao 实例。applicationContext.getBean(id)
		//UserDao userDaoImpl = (UserDao) applicationContext.getBean("userDaoImpl");
		
		// 通过 IoC 容器获取 userDao 实例。applicationContext.getBean(全限定类名.class)	
		UserDao userDaoImpl = (UserDao) applicationContext.getBean(com.manongajie.ioc.UserDaoImpl.class);
		
		// 别名标签:通过 IoC 容器获取 userDao 实例。applicationContext.getBean("user")		
//		UserDao userDaoImpl = (UserDao) applicationContext.getBean("user");

		// 调用 UserDao 的 add() 方法
		userDaoImpl.add();
	}
}


运行结果(使用 JUnit 测试运行 test1() 方法,运行成功后,控制台的输出结果):

添加了一个 user 。

由以上代码可以看出,在程序执行时,对象的创建并不是通过 new 一个类完成的,而是由 Spring 容器管理实现的。这就是 Spring IoC 容器思想的工作机制。

【文章其他地址】

微信公众号:码农阿杰

CSDN 博客

【参考资料】

spring

Artifact Repository Browser

Apache Commons

posted @ 2020-05-08 21:59  码农阿杰  阅读(1898)  评论(0编辑  收藏  举报