Spring Boot 入门总结
2018-12-06 22:35
393 查看
1.微服务
一个项目可以由多个小型服务构成(微服务)。
2.spring boot作用
spring boot可以快速开发微服务模块
- 简化j2ee开发
- 整个spring技术栈的整合(整合springmvc spring)
- 整个j2ee技术的整合(整合mybatis redis)
3.spring boot 开发准备
1).jdk:
- JAVA_HOME:jdk根目录
- path:jdk根目录\bin
- CLASS_PATH:.;jdk根目录\lib
2).maven
- MAVEN_HOME:maven根目录
- path:maven根目录\bin
- 配置maven本地仓库:mvn根目录/conf/setting.xml
<localRepository>D:/mvnrep</localRepository>
- 在IDE中配置mvn
window->preference->搜maven
- installations(添加自己的mvn路径)
- User Settings(修为自己修改过的setting.xml文件)
注:STS有内置的mvn
3).spring boot 开发工具
- Eclipse(带有sts插件)
- STS(整合sts过的eclipse)
- IDea
4).在spring官网生成项目实例
spring官网:https://spring.io
spring官网->projects->Quick start->SPRING INITIALIZR
5).在Eclipse中生成项目
Spring Starter Project
4.resources目录结构
- static:静态资源(js css 图片 音频 视频等)
- templates:模板文件(模板引擎 freemarker thymeleaf)
- application.properties:配置文件
注:spring boot 默认不支持jsp
5.查看开启和未开启的自动装配
在application.properties文件中加入debug=true,启动项目后启动信息打印到控制台,其中Positive matches列表中表示spring boot已经开启的自动装配,而Negative matches列表则是未开启的自动装配。
6.配置文件
- 多个配置文件相互补充
- 冲突(优先级):properties>yml
- 修改默认配置(prefix + 属性名),例:server.port=8888(修改端口号)、server.servlet.context-path=/boot(修改项目名)
- yml格式
server: port: 8888
- 创建bean对象
i.四个注解
@value:在类中直接给属性注入值
@Autowired:自动装配
@Component:将对象放入IOC容器
@ConfigurationProperties(prefix=“student”):为配置文件提供修改属性的前缀
ii.两种种注入方式
ConfigurationProperties批量注入(yml、properties)
value单个注入(可以利用EL调用properties中的值)
优先级:ConfigurationProperties>value
iii.两种方式的区别
ConfigurationProperties | value | |
---|---|---|
注值 | 批量注入 | 单个注入 |
松散语法 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
注入复杂类型 | 支持 | 不支持 |
注:
${student.name:"默认值"}不存在该EL属性使用默认值
注:简单类型(8个基本类型/String/Date)
注:prefix是配置文件提供用来修改属性的前缀
注:spring boot 在网页查看时默认没有项目名
1).application.properties
- 格式:k=v
- 可以使用EL表达式取随机数
- 不显示提示信息,可在pom.xml中配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
2).application.yml
- 格式:k:空格v,通过垂直对齐指定层次关系
- 日期格式:birthday: 2018/12/6
- map赋值(行内赋值):location: {province: 浙江,city: 杭州}
- 数组、集合(行内赋值):hobbies: [足球,篮球]
- 对象属性:使用层次赋值
注:字符串可以不写引号,双引号会转义转义运算符,单引号不会转义
注:集合赋值中的中括号可以省略
7.pom.xml
- GAV(groupId artifactId version)描述信息(唯一标识项目)
<packaging>jar</packaging>
(使用内置Tomcat自动打jar包)- 微服务(场景)配置(web tomcat mybatis等)
- 官网提供的配置代码
spring官网->projects->lean->对应版本的Reference Doc文件->starters->寻找自己需要的场景->pom
注:使用外置Tomcat时,需要将项目打成war包
注:在pom.xml配置微服务后,spring boot 自动在mvn仓库(本地仓库、中央仓库)中寻找依赖的jar包
8.自定义配置
1).引入xml文件
在主配置类使用@ImportResource引入配置文件
2).使用注解自定义配置类
- 两个注解
@Configuration:声明配置类
@Bean:修饰函数,将函数返回值类型的对象放入IOC容器,根据函数名使用
9.多环境切换
1).properties
- 默认spring boot会读取application.properties中的环境
- 多环境即为多文件,命名规范 application-环境名.properties
- 选用其他环境需要在application.properties文件中指定:spring.profiles.active=环境名
- 如果没有application.properties文件,spring boot 会自动
使用application-环境名.properties的文件
2).yml
- 多个环境都写在application.yml文件中,多个环境用"—"占一行来分割开,主环境在第一位,其他环境需要使用spring.profiles进行命名,如果要使用其他环境需要在主环境中通过spring.profiles.active来指定
3).通过运行参数动态指定运行环境
- STS(Eclipse):右键->Run Configration ->Argument->program Argument:–spring.profiles.active=环境名
- 命令行方式:java -jar 项目名.jar spring.profiles.active=环境名
4).通过vm参数动态指定运行环境
- STS(Eclipse):右键->Run Configration ->Argument-VM:-Dspring.profiles.active=环境名
10.配置文件位置及优先级
1).内部配置文件
- 默认(application.properties和application.yml)文件的位置
- file:项目根目录/config
- file:项目根目录
- classpath:项目根目录/config
- classpath:项目根目录
- 优先级从上往下一次降低
- 可以互补使用
注:file:项目根目录
2).外部配置文件(补救)
- 通过运行参数 STS(Eclipse):右键->Run Configration ->Argument->program Argument:–spring.config.location=文件路径
- 通过运行参数(直接放单个参数):–server.port=8888(命令行同理)
- 通过命令行:java -jar 项目.jar --spring.config.location=文件路径
注:优先级:外部>内部
注:内部和外部配置可以互补
3).官方优先级顺序
官方对应版本的Reference Doc文件->Learning about Spring Boot Features->Externalized Configuration
11.web静态资源
- 静态资源(html css js 等)的存放路径通过WebMvcAutoConfiguration类的addResourceHandlers()指定/webjars/
- 通过jar包引入三方静态资源(jquery等),可在WebJars官网(https://www.webjars.org)中找到配置代码(pom中配置)
- 使用三方静态资源是从该jar包中的webjars目录开始写的
- 如果想要将自己写的静态资源也通过jar包引入,必须按照三方jar包的目录结构来写(不推荐)
- 静态资源存放路径(约定默认):“classpath:/META-INF/”、“classpath:/resources/”、“classpath:/static/”、“classpath:/public/”(优先级从左到右依次减小)
- 在默认存放目录中访问静态资源:直接写资源名,不加前面的路径
- 默认欢迎页:在默认路径中的index.html默认为欢迎页,如果没有则没有欢迎页
- 默认网页logo:在默认路径中的默认名字为favicon.ico
- 修改默认路径(String []):spring.resources.staticLocation
12.web动态资源
- 模板引擎(模板 + 数据) spring boot 推荐 thymeleaf
- 模板:静态网页 + EL表达式(例)
- 数据:Attribute中的键(对应EL表达式)值对,modelview或map
- thymeleaf模板目录:classpath:templates,后缀必须是.html
- 使用方式:1.引入命名空间:
<html xmlns:th="http://www.thymeleaf.org">
,2.在标签中使用(直接拿值,不需要request前缀)<p th:text="${home.welcome}">前面赋值不成功时,默认输出该行!</p>
- thymeleaf使用文档下载:官网文档https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.pdf
- th:xx使用:参考文档第十章Attribute Precedence
- 用th:text不会解析html,用th:utext会解析html,在页面中显示相应的样式(例如标题标签)
- 可使用EL表达式($)之外的表达式:参考文档第四章
注:spring boot 中修改静态资源需要重启
13.整合JSP开发
- 整合jsp不能使用内置的Tomcat,创建项目时必须选择将项目打为war包,另外需要单独配置一个外置的Tomcat
- 需要建立web项目所需要的目录结构:1.webapps/WEB-INF(需要),2.webapps/WEB-INF/web.xml(不需要,spring boot会自动配置)
- 访问jsp网页时,需要加项目名
- 需要配置mapper返回值的前后缀:spring.mvc.view.prefix=/WEB-INF/,spring.mvc.view.suffix=.jsp
- 网页取值时需要在request域中拿值
注:创建项目后,发现pom.xml文件中内置的Tomcat已经自动配置不打包
注:多了一个servlet初始化类(ServletInitializer):在启动Tomcat时调用启动spring boot主配置类
14.日志
- spring boot 默认选用 slf4j,logback两种日志框架、并且已经自动配置
- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
- spring boot 默认日志级别为INFO
- 测试日志级别:打印常用的级别(只能打印>=当前日志级别的信息)
- 为当前项目设置日志级别:logging.level.主配置类包名=日志级别
- 设置日志保存路径(相对路径):logging.file=springboot.log(项目根目录)
- 设置日志保存路径(绝对路径):logging.file=日志路径
- 设置日志文件夹:logging.path=文件夹路径(默认文件名spring.log)
- 设置日志控制台输出格式:logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} %msg%n
- 设置日志文件输出格式(根据自己的需求修改):logging.pattern.file=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} %msg%n
- 创建日志对象(反射):Logger logger = LoggerFactory.getLogger(当前类名.class)
15.常用注解介绍
- @SpringBootApplication:spring boot的主配置类
包含@SpringBootConfiguration、@EnableAutoConfiguration等注解 - @SpringBootConfiguration
包含@Configuration等注解 - @Configuration:配置类(加入到IOC容器)
- @EnableAutoConfiguration:使spring boot可以自动配置(约定)
包含@AutoConfigurationPackage、Import等注解 - @AutoConfigurationPackage:自动将该包及所有的子包加入到扫描器(自己写的)
- @Import:引入三方依赖(jar、配置)
- @Controller:控制器(加入到IOC容器)
- @RequestMapping:映射路径
- @ResponseBody:return的数据可以直接在网页打印
- @EnableConfigurationProperties:导入属性文件
- @ConfigurationProperties:提供prefix
- @ConditionalOnWebApplication:配置类执行条件
- @ConditionalOnClass:配置类执行条件
- @ConditionalOnProperty:配置类执行条件
- @Bean:修饰函数,将函数返回值类型的对象放入IOC容器,根据函数名使用
- @SpringBootText:spring boot 测试类
- @Test:一个测试过程,修饰函数
- @RunWith
- @value:在类中给属性注入值
- @Autowired:自动装配
- @Email:jsr303数据校验中的邮箱校验
- @Validated:开启jsr303数据校验
- @PropertySource:引入配置文件(只能加载properties文件,不能加载yml文件)
- @ImportResource:引入自己编写的spring.xml(在主配置类中引入)
注:spring boot 在启动时,会根据META-INF/spring.factories(spring-boot-autoconfigure-版本号-RELEASE.jar)找到相应的三方依赖,并引入
注:spring-boot-autoconfigure-版本号-RELEASE.jar 包含了j2ee整合体系中的依赖
相关文章推荐
- 超详细的Spring Boot入门笔记(总结)
- springBoot入门总结(二)整合Freemarker
- springBoot入门总结(一)HelloWord
- springBoot入门总结(三)整合SpringDataJPA
- spring boot学习总结(一)-- 基础入门 Hello,spring boot!
- SpringBoot学习1之快速入门
- spring boot快速入门搭建输出hello world
- Spring Boot 入门之 Web 篇(二)
- SpringBoot快速入门-基本项目构建
- SpringBoot入门——局部与全局的异常处理
- Spring Boot学习之路一:入门
- Spring Boot 快速入门
- Spring Boot 入门
- <springBoot>(三)(入门篇)Eclipse中yml文件格式化显示
- 服务器入门:docker下的集群操作,docker+nginx+springboot+redis+mysql。
- Spring Boot快速入门(Hello World)
- 从入门到入门-Spring Boot-第一个Spring Boot应用
- spring boot入门
- 【原创】Spring-boot快速入门(二)JPA数据源--转载请注明出处
- SpringBoot入门:添加FreeMarker支持