SpringBoot学习笔记(一)
一、回顾Spring:
Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。
二、Spring采用了以下4种关键策略:
1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;
2、通过IOC,依赖注入(DI)和面向接口实现松耦合;
3、基于切面(AOP)和惯例进行声明式编程;
4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;
三、什么是SpringBoot
SpringBoot就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架,SpringBoot简化开发,约定大于配置, you can "just run",能迅速的开发web应用,几行代码开发一个http接
四、Spring Boot的主要优点:
-
为所有Spring开发者更快的入门
-
开箱即用,提供各种默认配置来简化项目配置
-
内嵌式容器简化Web项目
-
没有冗余代码生成和XML配置的要求
五、SpringBoot快速搭建项目
环境:
1.java version "1.8.0_91"
2.Apache Maven 3.6.3
3.SpringBoot 2.4.3
开发工具:
IDEA
Spring官方提供了非常方便的工具让我们快速构建应用
Spring Initializr:https://start.spring.io/
项目创建方式一:
使用Spring Initializr 的 Web页面创建项目
2、填写项目信息
3、点击”Generate Project“按钮生成项目,下载此项目
4、解压项目包,并用IDEA以Maven项目导入。
5、如果是第一次使用,可能速度会比较慢,包比较多(等待)
项目创建方式二:
使用 IDEA 直接创建项目
1、创建一个新项目
2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
3、填写项目信息
4、选择初始化的组件(初学勾选 Web 即可)
5、填写项目路径
6、等待项目构建成功
(可以发现,IDEA集成了SpringBoot的创建,在IDEA上直接创建SpringBoot项目和在官网上的创建项目差不多。)
项目结构分析:
通过上面步骤完成了基础项目的创建。就会自动生成以下文件。
1、程序的主启动类
2、一个 application.properties 配置文件
3、一个 测试类
4、一个 pom.xml
pom.xml 分析:
<!--父依赖--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!--web场景启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--springboot单元测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <!-- 剔除依赖 --> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <!-- 打包插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!--自己添加的,跳过项目运行测试用例--> <skipTests>true</skipTests> </configuration> </plugin>
如果在pom.xml中,这个地方出现爆红如下:
解决:检查Maven环境配置:(我的是这样就解决了,如有其他问题,自行百度)
编写一个http接口:
1、在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到
2、在包中新建一个HelloController类
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello(){ return "Hello Word! My SpringBoot"; } }
3、编写完毕后,从主程序启动项目,浏览器发起请求,看页面返回;控制台输出了 Tomcat 访问的端口号!
访问:localhost:8083
访问:localhost:8083/hello
简单几步,就完成了一个web接口的开发!
注意点:
此时可能遇到的错误:
报错1:java: 警告: 源发行版 11 需要目标发行版 11
解决:
1.先看编译环境的JDk版本是否一致( File-Settings-Build,Execution,Deployment-Compliler-Java Complier的jdk版本是1.8)
2.再看下菜单File-Project Structure下的Project和modules的编译环境是jdk1.8
3.查看编码方式是否为utf-8
重新启动项目,项目错误消失。
报错2:Web server failed to start. Port 8080 was already in use.
报错原因:端口被占用。
解决方法:
解决方法一:修改端口:https://blog.csdn.net/zhouky1993/article/details/103974598
解决方法二:关闭占用端口的进程。 https://blog.csdn.net/zhouky1993/article/details/103976320
我用了第一种方式,在application.properties文件中加入端口号设置:
#端口号设置
server.port=8083
重新启动即可。
六、将项目打包成jar包
点击 maven的 package
如果打包成功,则会在target目录下生成一个 jar 包
打成了jar包后,就可以在任何地方运行了!
测试:到jar包生成的文件位置,打开Windows Power Shell
java -jar .\springBootDemo-0.0.1-SNAPSHOT.jar
浏览器去访问,也是可以访问得到的。
注意点:
打包时可能报错1:
Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0
解决办法:
在pom.xml中,修改maven-resources-plugin的版本
<!--在这里修改版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> </plugin>
打包时可能报错2:
Failed to execute goal org.apache.,maven.plugins:maven-compiler-plugin:3.8.1
在pom.xml中添加如下代码:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
加餐:
更改启动时显示的字符拼成的字母,也就是 banner 图案;
1.在项目的 resources 目录下,新建一个banner.txt文件
2.到:https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可!
我生成一个杭州: