一、Spring时代变换
1. Spring1.x 时代
Spring初代都是通过xml文件配置bean,随着项目的不断扩大,繁琐的xml配置,混乱的依赖关系,难用的bean装配方式,由此衍生了spring2.x时代的变化
2. Spring2.x时代
随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行声明,注入和装配,简化了xml的配置和bean的装配;
旧时代Spring的最佳实践:
2.1、 应用的基本配置用xml,比如:数据源、资源文件等;
2.2、 业务开发用注解,比如:Service中注入bean等;
3、Spring3.x, 4.x时代
Spring3.x,4.x和Spring boot都推荐使用自动配置的方式,即免去了很多注解和xml配置,通过Spring自动识别,自动完成配置的方式,来简化项目的开发。
二、SpringBoot的诞生
随着动态语言Ruby,Groovy,Scala,Node.js的流行(什么是动态语言,即无需编译即可运行的语言,相比之下,Java属于静态语言),Java繁多的配置,复杂的部署流程和第三方技术集成的难度愈发变大。
在此背景下,SpringBoot诞生了,虽然仍旧属于静态语言的一种,但是它倡导“习惯优于配置”(即使项目中存在繁多配置,但已经内置了一个习惯的配置,让用户无需手动配)的理念,得到了很多开发者的支持,因为可以摆脱复杂的部署流程使应用快速的跑起来。
使用SpringBoot可以快速的创建一个独立运行的不依赖于任何容器(一个Jar包即是一个服务,内嵌Serverlet容器)的项目,减少开发过程中的配置,提高项目交付的效率。
SpringBoot的优缺点:
(1)快速构建开发项目
(2)对主流框架的无配置集成
(3)项目可独立运行,无需依赖外部Serverlet容器
(4)提供运行时的监控
(5)极大提高了开发,部署效率
(6)与云计算的天然集成
三、第一个SpringBoot应用
1、设置spring boot的parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
说明:Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发。
2、导入SpringBoot的Web支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
3、添加SpringBoot的插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.3.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4、编写第一个SpringBoot支持的Web程序
@Controller
@SpringBootApplication
@Configuration
public class HelloApplication { @RequestMapping("hello")
@ResponseBody
public String hello(){
return "hello world!";
} public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
} }
代码说明:
(1)@SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置。;
(2)@Configuration:这是一个配置Spring的配置类;
(3)@Controller:标明这是一个SpringMVC的Controller控制器;
(4)main方法:在main方法中启动一个应用,即:这个应用的入口;
5、出现如下运行日志和浏览器验证结果如下即为成功
四、SpringBoot的页面重定向
@Controller
class IndexController { @RequestMapping("/")
public String index() {
return "forward:/someIndex.jsp";
}
} @Configuration
public class DefaultView extends WebMvcConfigurerAdapter{
@Override
public void addViewControllers( ViewControllerRegistry registry ) {
registry.addViewController( "/" ).setViewName( "forward:/yourpage.html" );
registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
super.addViewControllers( registry );
}
}