• 开启 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-distspring-framework-5.2.6.RELEASEschemaeans。一步步打开存放 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

  • 相关阅读:
    Spring Cloud(三):Web服务客户端之Feign
    Spring Cloud(二):Web服务客户端之Ribbon
    Spring Cloud(一):服务注册中心Eureka
    细说Ansible主机清单inventory
    Ansible配置文件ansible.cfg详解
    CentOS 7离线安装Ansible
    Java中的异常处理
    PyQt5Day33--自定义信号+动画
    8. matlab图像处理基础——边缘检测+形态学变换+图像增强
    7. matlab图像处理基础——几何变换+正交变换
  • 原文地址:https://www.cnblogs.com/manongajie/p/12853322.html
Copyright © 2020-2023  润新知