一、Spring简述

Spring开源框架是一个轻量级的企业级开发的一站式解决方案,是为了解决企业应用程序开发复杂性而创建的。

二、在Web项目中集成Spring框架

1. 在pom.xml文件中添加Spring相关的依赖

<properties>
        <spring.version>5.2.2.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!--    spring start    -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--    spring end    -->

2. 在src/main/resource目录下创建applicationContext.xml配置文件,具体代码如下:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
       http://www.springframework.org/schema/mvc>
       http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    <context:component-scan base-package="zqq.trys"/>
</beans>

注:<context:component-scan/>注解,扫描base-package包或者子包下所有的Java类,并把匹配的Java类注册成Bean。

3. 在web.xml配置文件中添加如下代码:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

注:
        ① <context-param>:整个项目的全局变量,相当于设定了一个固定值。param-name是键,相当于就是参数名;param-value是值,相当于就是参数值。
        ② ContextLoaderListener:ContextLoaderListener监听器实现了ServleContextListener接口,其作用是启动Web容器时,自动装配ApplicationContext的配置信息。在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

4. 在src/main/test目录下创建zqq.trys.SpringTest测试类,具体代码为:

@Service
public class SpringTest {
    @Test
    public void testSpring() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        SpringTest springTest = (SpringTest) applicationContext.getBean("springTest");
        springTest.say();
    }

    public void say() {
        System.out.println("say hello.");
    }
}

注:
        ① @Service:Spring会自动扫描到@Service注解的类,并把这些类纳入进Spring容器中管理。也可以用@Component注解,只是@Service注解更能表明该类是服务层类。
        ② ApplicationContext容器:ApplicationContext是Spring中较高级的容器,它可以加载配置文件中定义的Bean,最经常被使用的ApplicationContext接口实现如下:

(1)ClassPathXmlApplicationContext:从类路径ClassPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作,具体代码如下:

// 装载单个配置文件实例化ApplicationContext容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

// 装载多个配置文件实例化ApplicationContext容器
String[] configs = {"bean1.xml","bean2.xml","bean3.xml"};
ApplicationContext cxt = new ClassPathXmlApplicationContext(configs);

(2)FileSystemXmlApplicationContext:从指定的文件系统路径中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。具体代码如下:

// 装载单个配置文件实例化ApplicationContext容器
ApplicationContext cxt = new FileSystemXMLApplicationContext("beans.xml");

// 装载多个配置文件实例化ApplicationContext容器
String[] configs = {"c:/bean1.xml","c:/bean2.xml","c:/bean3.xml"};
ApplicationContext cxt = new FileSystemXMLApplicationContext(configs);

(3)XmlWebApplicationContext:从Web应用中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。这是为Web工程量身定制的,使用WebApplicationContextUtils类的getRequiredWebApplicationContext方法可在JSP与Servlet中取得IOC容器的引用。

    最后,运行代码中的单元测试方法testSpring(),在控制台看到如下图所示的结果,表示Web应用集成Spring框架成功。

java spring maven shell项目 maven项目引入spring_xml