经过之前 Spring 文章的铺垫,终于来到了基于 Spring ,并且也是 Spring 最火的框架之一 Spring Boot ,在企业或者个人项目中,基本都是使用 Spring Boot ,所以 Spring Boot 在 Spring 的学习阶段是非常重要的。
Spirng 的诞生是为了简化 Java 程序的开发,最早一起使用的 servlet ,servlet 能用是能用但是非常的麻烦不方便还容易出错,就比如使用一个依赖是要到中央仓库 Maven 里面去找的,还要对应去找里面的版本号,即麻烦又容易出错;所以之后就诞生 Spring,但是还可在此基础上更简洁就又诞生了 Spring Boot。
简而言之,Spinrg 的诞生是为了简化 Java 程序,而 Spring Boot 的诞生是为了简化 Spring 程序开发;Spring Boot 也是为了能快速开发 Spring 框架
1、快速继承框架:Spring Boot 提供了启动添加依赖的功能,无需在 Maven 里面去找对应版本号的依赖,在Spring Boot 里面所有的版本号都集成了,直接添加依赖即可,用于秒级集成各种框架。
2、内置运行容器:无需配置 Tomcat 等 Web 容器,直接就可以运行和部署程序。
3、快速部署项目:无需外部容易即可启动并运行项目。
4、可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。
5、支持更多监控的指标,可以更好的了解项目的运行情况。
以上哪一种优点不是之前 Servlet 和 Spring 的短板,所以每一次的新技术的诞生和改进相比于之前的效率都是 “质” 的提升。
Idea 分为 社区版和专业版,这里主要是讲社区版本的安装。
1、首先社区版要安装一个插件 Spring Assistant
Spring 助手
2、安装完成后,就可以创建Spring Boot 的项目了。
第二步的时候需要改 java 的类别,推荐使用 java 8版本,还有就是需要改成 Maven 项目;第三步是添加依赖是最关键的步骤,以前都是在 Maven 中央仓库里面找的依赖,现在直接就可以添加,非常的方便快捷,效率高还不容易出错(也要注意版本号的选择);第四步就是保存路径了不必多说。
注意事项:
创建好了 Spring Boot 之后可能加载的比较慢,进去之后需要确认一下自己的 Maven 是否是国内源,不是的话需要配置成国内的源,不然加载会很慢而且有时候可能加载出错等等。
国内镜像 Setting.xml 配置如下:
<mirrors>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
这里需要注意一下 < mirrors > 镜像,有可能你是注解了或者没有配置其他国内镜像,我这里配置的是阿里云的可以使用,这个只是 setting.xml 的一重要的部分,完整的可以点击这里查看 Spring boot Maven 国内源settings的配置
创建 Spring Boot 不是只有在编译器里面创建,在官方提供的网页版也可以创建 Spring Boot 项目。
官网地址:https://start.spring.io/
都设置好之后,点击 generate 就会生产成一个压缩包,从压缩包里面解压,选择 Idea 打开就成了。
有些目录没有用处,也不需要使用时可以删除的
Spring Boot 项目主要目录:
两个主要目录:
其中里面 pom.xml 文件的也是非常重要的。里面的启动文件 @SpringBootApplication
是 Spring Boot 的启动类注解,点击里面的 main 方法就可以运行 Spring Boot 项目了。
在 Spring Boot 中就不需要配置组件 xml 的扫描路径了
Spring Boot 本就是用来实现前后端的一个工具( Web 项目或者接口),在浏览器里面输入了一个信息之后,url 地址要能够对应到某个程序,接下来用 Spring Boot 来实现基础使用,浏览器及用户之间的交互功能,输入一个 Hello World
1、首先我们使用注解先把这个程序放入 Spring 容器中,确保在 Spring Boot 启动之后可以用到它
2、因为需要浏览器映射到后端程序需要添加一个新的注解 @RequestMapping
它的作用就是与 servlet 中的 @WebServlet 一样映射路由,但是又有一些差别;区别就是@RequestMapping
必须放在方法上,而@WebServlet 是加在类上的。
@Controller //1
@RequestMapping("/index") // 2
public class HelloController {
@RequestMapping("/sayHi") //3 http://localhost:8080/index/sayHi
public String sayHi() {
return "你好 Spring Boot";
}
}
现在我们启动Spring Boot ,使用 http://localhost:8080/index/sayHi,看是否能成功访问
❓❓❓可以看到没有访问成功,出现了404,那是什么原因导致的尼?
原因:在 Spring web 最开始的时候是没有前后端分离的,以上代码的写法是返回了一个页面,而非数据信息,没有一个页面能叫 你好 Spring Boot 所以会出现 404,为了让它返回一个数据信息需要再次添加一个注解 @ResponseBody
,这个注解加在方法或者类上都是可以的。加上这个注解就返回的是一个非页面的数据(非静态页面)。
3、加上@ResponseBody
返回一个数据信息给浏览器
@Controller //1
@RequestMapping("/index") // 2
public class HelloController {
@RequestMapping("/sayHi") //2 http://localhost:8080/index/sayHi
@ResponseBody // 3
public String sayHi() {
return "你好 Spring Boot"
;
}
}
这样就能访问成功了。
@ResponseBody 访问的是一个数据,首先它回去判断一下是否是 json 格式,不是 json 格式就会判断是否是 html 格式。如果返回的是 json ,那么 Spring Boot 就会帮你适配返回的就是一个 json 数据
@Controller
@RequestMapping("/index")
public class HelloController {
@RequestMapping("/sayHi2") //localhost:8080/index/sayHi2
@ResponseBody
public HashMap<String,Object> sayHi2() {
HashMap hashMap = new HashMap();
hashMap.put("name","java");
hashMap.put("password","123");
return hashMap;
}
}
这里Spring Boot 就会通过你的类型来帮你自动适配返回的类型,就如说这了是键值对,Spring Boot 就会给你适配为 json 数据格式,最后运行的结果为:
{"password":"123","name":"java"}
所以说 Spring Boot 的框架是非常强大的,你返回的是 String 就自动适配 html 格式,键值对就是适配 json 格式。
总结:Spring Boot 里面经常使用的两个注解就是 @RequestMapping
和 @ResponseBody
,并且这两个注解既能修饰方法也能修饰类。
Spring Boot 有一个启动类注解是 @SpringBootApplication
如果把我们项目程序放到了与启动类是平级或者说是在启动类以下的子类就能运行成功。
如果说你的项目程序与启动类不在同级或者说是以下级别,Spring Boot 就不会识别到,这就说明 Spring Boot项目没有将对象注入到容器里面
以上的原因就是Spring Boot 的设计原则就是约定大于配置 这是 Spring Boot 设计约定好的规则,按照它的规则进行就好了,在 Spring 中也是 XML 配置文件中也是通过 Bean 来扫描的路径,而 Spring Boot 按照它的规则约定来的话就会自动扫描路径把项目程序注入到容器中。
最后总结:
由于 Spring 在后面的开发中发现Spring 使用越来越臃肿,那么 Spring Boot 就从此诞生了,简单来说 Spring Boot 是为了快速开发 Spring 而诞生的。
优点:
1、快速继承框架:Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
2、内置运行容器:无需配置 Tomcat 等 Web 容器,直接就可以运行和部署程序。
3、快速部署项目:无需外部容易即可启动并运行项目。
4、可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。
5、支持更多监控的指标,可以更好的了解项目的运行情况。
Spring Boot 可以使用 Idea 或者网页官网创建,它的设计思想是 约定大于配置,类上面有 @SpringBootApplication
就是 Spring Boot 的启动类。