【spring Boot 一】Hello World 开山篇
一、简介
spring 官方网站本身使用Spring 框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系。
随着Spring 3.0的发布,Spring IO团队主键开始摆脱XML配置文件,并且在开发过程中大量使用“约定优先配置”(convention over configuration)的思想来摆脱Spring框架中各种复杂的配置,衍生了Java Config。
SpringBoot是伴随着Spring4.0诞生的。
Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
该项目旨在帮助开发者更容易地创建基于Spring的应用程序和服务,使得现有的和新的Spring开发者能够最快速地获得所需要的Spring功能。
Spring Boot不生成代码,且完全不需要XML配置。其主要目标如下:
- 为所有的Spring开发工作提供一个更快、更广泛的入门经验。
- 开箱即用,你也可以通过修改默认值来快速满足你的项目的需求。
- 提供了一系列大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
博主准备写一组 Spring-Boot 入门的帖子,仅为了抛砖引玉,让需要的同学可以尽快了解如何使用Spring-Boot,内容参考官网和网上的资料(http://projects.spring.io/spring-boot/)。
Spring Boot是什么,解决哪些问题
- Spring Boot使编码变简单【简化开发过程】
- Spring Boot使配置变简单【简化配置过程】
- Spring Boot使部署变简单【简化部署过程】
- Spring Boot使监控变简单【简化监控过程】
目录
【spring Boot 一】 Hello World 开山篇
【Spring Boot 七】 启动加载数据 CommandLineRunner
【Spring Boot 十一】 MyBatis 连接数据库
【Spring Boot 十三】 动态数据源(多数据源自动切换)
【spring boot 十九】SpringBoot AOP 拦截器 Aspect 记录WEB日志
第一步
创建一个maven工程,这个不用多说
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spring_boot</groupId> <artifactId>spring_boot</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>spring_boot Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <finalName>spring_boot</finalName> </build> </project> |
第二步
创建一个包com.spring.boot,新建一个class为Application
Application.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package com.spring.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Created by XJH on 2017/8/14. */ @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } |
第三步
新建一个controller类HelloController
HelloController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package com.spring.boot; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by XJH on 2017/8/16. */ @RestController @EnableAutoConfiguration public class HelloController { @RequestMapping("/") public String hello() { return "Hello Spring-Boot"; } @RequestMapping("/info") public Map<String, String> getInfo(@RequestParam String name) { Map<String, String> map = new HashMap<>(); map.put("name", name); return map; } @RequestMapping("/list") public List<Map<String, String>> getList() { List<Map<String, String>> list = new ArrayList<>(); Map<String, String> map = null; for (int i = 1; i <= 5; i++) { map = new HashMap<>(); map.put("name", "Xiao-" + i); list.add(map); } return list; } } |
OK,我们【spring Boot】Hello World 入门篇已经完成,接下来访问项目。
运行Application中的main方法,
控制台输出
1 2 3 4 5 6 7 |
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.2.5.RELEASE) |
访问:http://localhost:8080/
结果:Hello Spring-Boot
访问:http://localhost:8080/info?name=xiaojiahao
结果:{"name":"xiaojiahao"}
访问:http://localhost:8080/list
结果:[{"name":"Xiao-1"},{"name":"Xiao-2"},{"name":"Xiao-3"},{"name":"Xiao-4"},{"name":"Xiao-5"}]
通过我们的Hello实例,相信大家一目了然,可谓spring-boot创建一个项目如此简单,完全可以在几分钟内将服务启动。
spring-boot抛弃繁琐的配置,让开发人员更专注与业务逻辑的实现。后面几篇文章将会对spring-boot的多个方面通过实例的方式呈现给大家。
学习源码下载:boot.tar.gz
有无目标是成功者与平庸者的根本差别。
发表评论