1. 今日大纲
1、 了解Spring的发展
2、 掌握Spring的java配置方式
3、 学习Spring Boot
4、 使用Spring Boot完成CRUD
2. Spring的发展
2.1. Spring1.x 时代
在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。
2.2. Spring2.x时代
随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
那么,在实际生产中,究竟是应该使用xml还是注解呢?
最佳实践:
1、 应用的基本配置用xml,比如:数据源、资源文件、服务器的链接配置等;
2、 业务开发用注解,比如:Service中注入bean、controller中注入bean等;
2.3. Spring3.x到Spring4.x
从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。
3. Spring的Java配置方式
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。
3.1. @Configuration 和 @Bean
Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;
3.2. 案例
该案例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。
3.2.1.基于intellij idea创建web maven项目
创建过程略,创建完成后的项目结构如下图
3.2.2. 导入依赖

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.example</groupId> 7 <artifactId>demo2</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>demo2</name> 12 <description>Demo project for Spring Boot</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>1.5.9.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.7</java.version> 25 </properties> 26 27 <dependencies> 28 <!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ --> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-web</artifactId> 32 </dependency> 33 34 <dependency> 35 <groupId>org.springframework.boot</groupId> 36 <artifactId>spring-boot-starter-test</artifactId> 37 <scope>test</scope> 38 </dependency> 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-starter-thymeleaf</artifactId> 42 </dependency> 43 <!-- servlet 依赖. --> 44 <dependency> 45 <groupId>javax.servlet</groupId> 46 <artifactId>javax.servlet-api</artifactId> 47 <!--<scope>provided</scope>--> 48 </dependency> 49 <!-- 50 JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。 51 不然报异常信息: 52 javax.servlet.ServletException: Circular view path [/helloJsp]: would dispatch back to the current handler URL [/helloJsp] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 53 --> 54 <dependency> 55 <groupId>javax.servlet</groupId> 56 <artifactId>jstl</artifactId> 57 </dependency> 58 <!-- tomcat 的支持.--> 59 <dependency> 60 <groupId>org.springframework.boot</groupId> 61 <artifactId>spring-boot-starter-tomcat</artifactId> 62 <!-- <scope>provided</scope>--> 63 </dependency> 64 <dependency> 65 <groupId>org.apache.tomcat.embed</groupId> 66 <artifactId>tomcat-embed-jasper</artifactId> 67 <scope>provided</scope> 68 </dependency> 69 </dependencies> 70 71 <build> 72 <plugins> 73 <plugin> 74 <groupId>org.springframework.boot</groupId> 75 <artifactId>spring-boot-maven-plugin</artifactId> 76 </plugin> 77 <plugin> 78 79 <artifactId>maven-compiler-plugin</artifactId> 80 81 <configuration> 82 83 <source>1.7</source> 84 85 <target>1.7</target> 86 87 </configuration> 88 89 </plugin> 90 </plugins> 91 </build> 92 93 94 </project>