SpringFramework简单的环境搭建

  • Post author:
  • Post category:其他



目录


1、看官网的参考文档—–简单理解Spring容器


2、看官网参考文档——-了解配置文件,即XML文件


3、看官网参考文档—–实例化容器(或者说配置文件和实体类我们都写齐全了,怎么组装到一起,让它们起作用,运行起来?)


在看这个文章之前,对SpringFramework没有了解的,可以看一下我的上一篇文章:




SpringFramework概述,先认识一下SpringFramework_你是我的日月星河的博客-CSDN博客


icon-default.png?t=M276
https://blog.csdn.net/weixin_46281472/article/details/123462783


1、看官网的参考文档—–简单理解Spring容器

我们看SpringFramework的参考文档,优先看它的核心的内容,我本人使用的是Edge浏览器,自带的有翻译功能,我就将网页翻译成了中文版。下面是核心内容所在的网页链接:




核心技术 (spring.io)



https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core



先贴两张官网上面参考文档翻译后的截图:


在上面的图中, 显示Spring容器或者说是SpringIOC将我们的Bean对象(

POJOs或者干脆就是我们的  实体类,比如Student类等,


使用专有名词显得我们更专业!

)和配置文件(XML文件)加载进来,经过映射操作以后,帮助我们实例化Bean对象,使得我们可以直接使用Bean对象,

不需要用最原始的  new方

式。

这个就是我们所说的  工厂模式。

2、看官网参考文档——-了解配置文件,即XML文件


下面的代码是SpringFramework的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">

    <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>

解释一下XML文件:首先是头格式,也就是XML文件最开头的我们看不懂的那些http链接;这些头格式链接是一定要有的,

因为头格式规定了

可以使用那些标签,标签中有哪些属性,标签之间的嵌套方式,有的甚至还包含了标签之间的先后顺序;

在上面的基本SpringFramework的XML配置文件中,主要就是bean标签:bean标签的id属性值是一个字符串,是惟一的,也就是一个bean标签与id值是一一对应的关系;


bean标签的class属性值也是一个字符串,但是这个字符串必须使用全限定类名,也就是与Bean标签相关联的那个类的全限定类名

,例如:com.xxx.xxx.xxx

3、看官网参考文档—–实例化容器(或者说配置文件和实体类我们都写齐全了,怎么组装到一起,让它们起作用,运行起来?)

还是先看一下官网的截图:

ApplicationContext是Spring IOC的接口,它有几个实现类,但是我们常用的实现类可能就是只有一个而已;

就像上面的图片一样,我们可以使用这个接口的实现类,将我们编写好的XML配置文件的名字(

当然,这些配置文件都是直接写在  Resources资源目录下的,如果还有文件夹的嵌套,应该是需要加上路径的  也就是  类路径

) 通过构造方法传过去;


下面我记录一下我使用的过程:

首先我写了一个实体类,这个实体类的路径是:org.example.service.UserService

然后需要写一个配置文件,这个配置文件的文件名可以任意,但是后缀名必须是.XML,我放在了Resources资源目录下;

实体类的代码这里我就不粘贴了,它只有一个test方法。

下面是XML配置文件  spring.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">

<!--    下面我们定义一个  Bean对象
    id是Bean对象的唯一标识符;class是需要被实例化的Bean对象的路径
-->
    <bean id="userService" class="org.example.service.UserService">

    </bean>

</beans>

然后我们就需要有一个Main方法,

因为Main方法是程序执行的入口

嘛,在Main方法中,我们要通过代码使得容器运行起来,组装好;

Main方法的代码如下:

import org.example.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Starter {
    public static void main(String[] args) {
        //首先我们得到  Spring的上下文环境, 也可以说是  Spring IOC,  拿到我们的环境
        ApplicationContext ac= new ClassPathXmlApplicationContext("spring.xml");
        //下面我们得到需要被实例化的对象  getBean(id):这里的id表示我们  spring.xml文件中Bean标签的id属性值
        UserService userService= (UserService) ac.getBean("userService");
        //上面需要我们进行一下强制转换  getBean返回的是一个 Object类型, 这个类型是所有类的父类

        //下面我们调用一下方法,  可以调用方法就说明底层已经帮助我们实例化了
        userService.test();
    }
}


注意看我代码上面的注

释;

这里我们使用的ApplicationContext接口的实现类是  ClassPathXmlApplicationContext

从名字上就可以看出来,是  类路径的意思;

它还有另一个实现类:FileSystemXmlApplicationContext   名字上可以看出来它是文件系统,也就是当我们的XML配置文件在本地电脑的某一个位置的时候,我们可以使用这个文件的绝对路径,

但是我们想想就知道,有谁会将一个系统的配置文件不放在代码文件夹下,而是放在本地电脑的某一个地方呢

? 这个类几乎是不用的,了解就行啦;

后面我们就可以调用ApplicationContext对象的getBean方法,参数是Bean标签的id属性值,调用这个方法以后,我们就可以得到一个实例化好的对象(

发现没有,我们不用去new了

然后调用这个对象的test()方法后,可以正常运行,

也没有报空指针异

常。

这里

我再多说一下:ApplicationContext的父接口是BeanFactory接口,也就是说:在我们上面的Main方法的代码中,我们将ApplicationContext接口换成BeanFactory接口也是可以的。但是毕竟BeanFactory是父接口,提供的功能可能没有那么强

然后呢,还有:

如果我们有多个XML配置文件在Resources资源目录下

,在new  ClassPathXmlApplicationContext()的时候,我们可以将全部的XML文件的文件名(包含后缀名)一个一个的写在里面,使用逗号隔开就行啦;这一点我们通过看这个类的构造方法也是可以看出来的(按着Ctrl键,点击这个类就会在IDEA中进到这个类的代码中去);


最后,我这里没有粘贴POM文件的依赖,使用的是Maven工程,如果有读者想验证一下的话,注意我引入的包, 当使用这个类飘红的时候,使用IDEA快捷键将依

赖导入就可以啦!

写的可能有许多瑕疵,欢迎批评指正,感谢支持!!!



版权声明:本文为weixin_46281472原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。