从业10年,经历了技术架构由单一应用部署到分布式部署,业务架构由单一系统到微服务。技术框架由之前的Struts,Struts2为核心,演变到Spring MVC,再到现在的Spring Boot。技术框架的演变方向始终朝着快速开发的目的,让程序员将更多的时间和精力放在业务需求的整理、设计和实现上。
当初Spring的XML配置化的IOC的出现给应用的开发带来极大的便捷,于是很快赢得程序员的喜爱,Spring框架的迅速流程也正是得益于他的轻量级配置、类之间的松耦合、实例方便管理。随着时间的推移,几年前使用Spring做的项目回过头来一看,Spring.xml文件以及非常庞大,里面定义了几百甚至上千的Bean。往往系统还会集成Mybatis,Hibernate,Freemarker,Dubbo,Redis等第三方框架或者工具,整体XML的维护成本也就会变的很高。并且在原先的Spring框架中,XML和注解都可以使用,也就造成一种情形,一个系统中有的人用XML有的人用注解,虽然可以通过代码规范来限制,但是也增加后期维护成本。
Spring Boot的出现可以有效避免上面提到的情况。采用自动化配置的方式,让开发应用变的更加轻松。
新建一个Maven项目,项目名为:demo
修改pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Spring Boot的在jar依赖方面的处理对程序员来说真的非常友好,spring-boot-starter-web的引入可以自动加载应用需要的一些常见jar,不需要想以前一样一个个人工引入。
一个Web项目,自然少不了一个Controller:
@RestController
public class HelloController {
private final Logger logger = Logger.getLogger(getClass());
@RequestMapping(value="/hello", method = RequestMethod.GET)
public String index() {
return "Hello Spring Boot 2";
}
}
与原先Spring MVC不同的是,我们不需要再在本地IDE里面配置一个应用服务器,然后再打包和运行。在Spring Boot中,只需要增加一个启动类即可:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
IDE里面执行右键运行DemoApplication类,即可启动Spring Boot内置应用服务器。
启动完成后,范文:http://localhost:8080/hello
一个简单的demo就这样完成了。文件结构如下所示:
注意:DemoApplication作为启动类,一定要在Controller的上层文件夹下!