一、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框架成功。