目录
1.Spring Boot是什么?为什么要学?
1.1.概念
1.2.优点
2.Spring Boot项目创建
2.1.使用Idea创建(ide开发商提供)
2.1.1.使用Idea社区版
2.1.2.使用Idea专业版
2.2.网页版创建(Spring官方提供)
3.Spring Boot项目目录介绍
4.输出Hello World
注意:包路径错误!
5.Spring Boot核心设计思想:约定大于配置
1.Spring Boot是什么?为什么要学?
1.1.概念
(Spring的诞生是为了简化Java程序开发,而Spring Boot的诞生是为了简化Spring程序开发。)
Spring Boot的翻译就是Spring框架的脚手架,是为了快速开发Spring框架而诞生的,更方便,简洁,小巧。
1.2.优点
- 快速集成框架,Spring Boot提供了启动添加依赖的功能,用于秒级集成各种框架(不用去官网搜索依赖支持再添加到pom.xml中)。
- 内置运行容器,无需配置Tomcat等Web容器(IDEA外部容器),直接运行和部署程序。
- 快速部署项目(一行命令),无需外部容器即可启动并运行项目。
- 可以完全抛弃繁琐的XML(xml会无端报错;xml不好调试和感知错误,idea对xml的适配不是很好;写法麻烦;每一个框架,技术都有其独有的xml格式,idea要匹配所有的技术不现实),使用注解和配置的方式进行开发。(Maven项目必须有xml,Gradle项目不需要xml)
- 支持更多的监控的指标(可通过网页的方式来停止Spring Boot项目),可以更好的了解项目的运行情况(注册了多少bean,运行在哪个平台,有几个定时任务,包括哪些方法,接口等)。
2.Spring Boot项目创建
2.1.使用Idea创建(ide开发商提供)
2.1.1.使用Idea社区版
要先安装Spring Assistant(Spring助手)插件。
(社区版部分太老或太新的版本的Idea插件可能不适配安装不了)
或:(会自动匹配Idea当前版本号)网页版安装插件https://plugins.jetbrains.com/plugin/15574-spring-assistant-valuetoyml
创建Spring Boot项目:
- Choose Spring Initializr server:在进行Spring Boot初始化时会使用哪个服务器。
- Default:默认会从官方(国外地址)拉取数据源。
- Spring cloud dataflow:Spring cloud数据源,一般不用。
- Custom:自定义地址,如国内的阿里巴巴源。
点击Next如果出现Fetch Error错误:①关闭重新创建;②更换网络再试;③更换阿里国内源(它的版本会老一些https://start.aliyun.comhttp://xn--v6q16kl8x1g6aywe)
解决:①关闭重新创建;②更换网络再试。
- Group Id:组织id/公司id(域名倒置)。
- Artifact Id:项目id。
- Version:项目版本。
- Project type:项目类型(默认情况下Spring Boot是个Maven项目(主流,配置文件采用xml格式)或Gradle项目(下一代的Maven,打包性能比Maven更好,配置文件采用key-value形式,语法更简洁)二者作用一样,语法略不同)。
- Language:开发语言。
- Packaging:打包类型(Spring Boot默认是Jar包,不仅含Web包,还含有其他包,是一系列组合的Jar包,可以使用Java命令直接启动Spring Boot项目;Servlet默认是War包(Web包),不能用Java命令启动)。
- Java version:jdk版本(推荐8)。
- Project name:项目名称。
- Project description:项目描述。
- Package name:项目包名/根路径。
- 选择Spring Boot版本号(习惯使用次新正式版本(后面没有任何英文的))。
- 添加外部jar包(打勾即可)。
- 只需要修改项目名字和存放路径,其他不用改。
- Module name:模块名字(目前创建的项目都是单项目单模块,可忽略)。
- Content root:正文/项目的根目录。
- Module file name:模块文件地址。
- Project format:项目格式(记录idea的一些配置)。
点击Finish创建项目。
第一次打开Spring Boot项目需要加载很久,因为当前Spring Boot框架并没有在自己的本地仓库。
为了加速Spring Boot项目的下载,在打开项目之前,请先确认自己的Maven项目已经配置为国内源:
配置了国内源。
国内Settings.xml的配置信息如下:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> </servers> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <profiles> </profiles> </settings>
当DemoApplication类的图标为蓝色的可运行的C时,代表项目创建好了。
启动并验证Spring Boot项目是否创建成功,找到启动类(加了@SpringBootApplication注解的类
)运行main方法,若正常打印出来项目加载时间,说明项目启动成功:
问题:开始配置好环境后,启动不成功,报错显示端口号8080被占用。
解决:
查看占用该端口号的进程pid,输入命令:
netstat -aon|findstr "被占用的端口号"
解除占用,输入命令:
taskkill /pid 占用该端口号的进程 /F
(如果带最后的/F,表示强制终止这个进程)
2.1.2.使用Idea专业版
专业版不需要安装任何插件。
2.2.网页版创建(Spring官方提供)
缺点:因为没有安装插件,在写配置文件时可能没有提示。
解决:重新下载可以安装插件的Idea版本,Idea可以多个版本并存的。
网页版创建项目先访问https://start.spring.io
添加引用:
解压这个解压包保存好,若其他创建Spring Boot项目方法都失败,可以直接用本地的这个解压包在Idea上打开就ok,啥时候用,啥时候打开就好。
再使用Idea打开,Spring Boot项目就算创建成功了。
访问出现以下页面说明网站启动了,只是没有页面。
访问出现以下页面说明压根网站就不能访问。
3.Spring Boot项目目录介绍
先删除4个无效的文件夹:
Spring Boot项目有2个主要的目录:
- src/main/java为Java源代码。(添加5大类注解和方法注解的类都要写在src/main/java/com/example/demo下面,否则会报错)
- src/main/resources为静态资源或配置文件。
- /static:静态资源文件夹。
- /templates:模拟资源文件夹。
- 存储所有的java源代码。
- 启动类。
- 资源文件。
- 前端的文件。(HTML,JS,CSS,图片)
- 存放页面中公共的通用的模板。
- 项目配置文件。
设置当前项目的端口号为8082。
- 单元测试的文件夹,存储所有单元测试类。
- 每次在编译/运行项目时都会自动生成的文件夹,其中保存当前项目的字节码(给JVM使用)。经常会出现缓存的问题,解决:将其删除重新运行项目即可。修改完代码后一点更要重启,否则target里还是之前的老代码。(热部署后就不用自己重启了,Idea会自动监测到修改代码后进行重启)
- 存放关于当前项目的所有依赖和项目的一些信息(如项目版本号等)
生成项目打包时把Lombook的插件排除掉,因为Lombook只是在编译之前起作用,编译之后就没有作用了。
4.输出Hello World
学习JavaEE就是用来实现Web项目或接口的,之前Spring是一个普通的Java项目,无法直接和浏览器进行互动;下面用Spring Boot来实现和浏览器及用户的交互。
注意:包路径错误!
把要注入到容器的类(写了五大类注解,方法注解的类)一定要和启动类放在同一个目录或启动类的子目录中,这样Spring Boot项目才能正常地将bean注入到容器中。否则将不能识别。
- 注入到容器的类和启动类在同级目录下√:
- 注入到容器的类在启动类的子目录下√:
- 其他情况×:
都会访问报错,说明Spring Boot项目没有将对象注入到容器中。
将要注入的类放在启动类的同级目录下:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/hi") //路由映射
public class HelloController {
@RequestMapping("/index") //路由映射
@ResponseBody //返回一个非静态页面的数据
public String sayHi() {
return "Hi, Spring Boot.";
}
}
@ResponseBody :返回一个非静态页面的数据,返回啥数据要看方法返回类型。
方法返回类型是HashMap/一个对象->返回json字符串。
方法返回类型是String->返回html数据。
点右上角运行(红圈)按钮。
通过IP地址+端口号+路由映射来访问:
5.Spring Boot核心设计思想:约定大于配置
Spring Boot项目能简单就简单,能不配置就不配置。所以有了一系列的约定做相应的管理和处理(上面例子),而简化了配置。能动嘴尽量不动手。