16年开始就在写Spring Boot相关的文章了,之前一直是在自己猿天地的博客上发布,今年开始维护公众号,大部分时间都在写新的文章。
一周能保持一篇原创的文章就已经很不错了,毕竟精力有限,在没有出新文章的时候就想着把之前写的文章分享出来,给正在入门学习Spring Boot的朋友。
Spring Boot作为微服务框架,从最根本上来讲,Spring Boot就是一些库的集合,集成了各种Spring的子项目,它能够被任意项目的构建系统所使用。
解决了平时开发中搭建项目框架的难度,非常方便。
搭建的步骤也是很简单的哈,首先创建个maven工程,然后配置pom文件
文件中配置Spring Boot版本信息以及成jar包的插件。
properties中的java.version是指定jdk的版本。
关于Spring Boot的版本大家可以用最新的,目前最新的版本已经到了2.0了。
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<properties>
<java.version>1.8</java.version>
</properties>
还需要别的什么配置吗,以前都要配置一些什么junit啊,各种spring的包啊,commons包啊之类的。
现在完全不需要了,是不是很简单,很方便。
贴一个官网给的列子:
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
我们可以看到所有的配置都被注解代替了,启动程序也可以直接用main方法启动了,框架里有内置的web容器,我们不在需要把程序丢到tomcat里面去部署了,不然怎么体现为服务框架的魅力。
接下来我们运行这个main方法可以看到输出了一大片日志信息。最有趣的还要属这个图形了。
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.1.RELEASE)
我们在浏览器中访问http://localhost:8080就能看到输出的Hello World!
下面讲下配置信息
配置的话默认的配置信息都在application.properties中,自己建个application.properties文件放在classpath中
比如这边默认启动的端口是8080, 我们改成80的配置如下:
#tomcat port
server.port=80
还有就是项目的context path默认是/, 也是可以改的
#the context path, defaults to '/'
server.context-path=/spring-boot/
改成上面的配置信息后我们在访问刚刚的地址就变成了http://localhost/spring-boot
上面官方给的列子我们可以看到只是启动Example这一个类而已,往往开发中我们肯定加载的是多个类
下面给出一个简单的列子,以学生来说明
我们先按照这个层次建下包
com
+- example
+- spring-boot
+- Application.java
|
+- domain
| +- Student.java
|
+- service
| +- StudentService.java
| +- StudentServiceImpl.java
|
+- web
+- StudentController.java
我们的Application类是程序的入口,负责加载所有信息
通过ComponentScan扫描类,最简单的是只加@SpringBootApplication注解就可以了,@SpringBootApplication中已经包含了下面的注解。
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
业务类,这边先不涉及数据库,就在业务层模拟了一条数据返回。
public interface StudentService {
List<Student> queryStudents();
}
@Service
public class StudentServiceImpl implements StudentService {
@Override
public List<Student> queryStudents() {
return Arrays.asList(new Student("1001", "yinjihuan"));
}
}
实体类
public class Student {
private String id;
private String name;
public Student() {
super();
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
控制类
@RestController
@EnableAutoConfiguration
public class StudentController {
@Autowired
private StudentService studentService;
@RequestMapping("/students")
Object queryStudents() {
return studentService.queryStudents();
}
}
我们在Application中执行main方法启动程序,然后访问我们的students资源
http://localhost/spring-boot/students
可以看到输出的结果
[{"id":"1001","name":"yinjihuan"}]