Springboot
1.微服务: -一个项目 可以由多个小型服务构成(微服务)
- spring boot可以快速开发微服务|
a.简化j2ee开发
b.整个spring技术栈的整合
c.整个j2ee技术的整个
准备:
jdk:
JAVA_ HOME: jdk根 目录
path: jdk根目录\bin
classpath: . ; jdk根目录\lib
maven
MAVEN_ HOME: maven根 目录
path: maven根目录\bin
配置Maven本地仓库: mvn根 目录/ conf/ setting. xml
目录结构
resources: .
static:静态资源(js css图片音频视频)
templates:模板文件(freemarker , thymeleaf;默认不支持jsp)
appl ication. properties:
配置文件
spring boot内置了tomcat, 并且不需要打成war再执行。
可以在appication. properties对端口号等服务端信息进行配置
spring boot将各个应用/三方框架设置成了一个个“场景”stater,
以后要用哪个,只需要引入那个场景即可。
选完之后,s
spring
boot就会将该场景所需要的所有依赖自动注入。
例如选择
‘web’
’, spring boot就会将web相关的依赖(tomcat json) 全部引入本项目
@SpringBootAppl icat ion: spring boot 的主配置类
该注解包含:
@Spr i ngBootConf i guration
@Enabl eAutoConf i gurat ion 使spring boot可以自动配置
@configuration
表示“配置类”: 1.该类是一个配置类
2.加了@Configuration注解的类,会自动纳入Spring容器
spring boot 在启动时,会根据META- INF/spring. factories找到相应的三方依赖
并将这些依赖引入该项目
自己写的
引入三方依赖(jar、配置)
总结:
编写项目时,- -般会对自己写的代码以及三方依赖进行配置。但是spring boot可以自动进行配置:
a:自己写的代码,spring boot通过@Spr ingBootConf igurat ion自动帮我们配置;
b.三方依赖通过spring- boot-autoconfigure- -2. 0.3. RELEASE. jar中的META- INF/ spring. factories进行声明,然后开启使用
spring-boot-autoconfigure-2.0. 3. RELEASE. jar包中包含了J2EE整合体系中需要的依赖。
c.如何自动装配:
通过观察该源码发现:
@Configuration:标识此类是一个配置类 、 将此类纳入springioc容器
如:通过HttpEncodingProperties将编码设置为了UTF_ 8
如何修改改编码:通过改Ht tpEncodingProperties的predfix+属性名进行修改
1每一个XxAutoConfiguration都有很多条件@Conditional0nXxx,当这些条件都满足时,配置生效
2全局配置文件中的key, 来源于某个Properties文件中的prefix+属性名
如何知道spring boot开启了哪些自动装配、禁止了哪些自动装配:application. properties中debug=true
Positive matches
积极装配 表示spring boot自动开启的装配
negative matches
消极装配 没开启的
配置文件
作用: spring boot自动配置(约定,8080 ). 可以使用配置文件对默认得配置进行修改
默认全局配置文件:
application. properties k=v
application. yml 不是一个标记文档 k:空格v ;通过垂直对齐指定层次关系 ; 默认可以不写引号; “”会将其中的转义符进行转义,其他得不会
1 | server : |
xml:是一个标记文档
1 | <server> |
9.通过yam1给对象注入值:
注入值
s tudent:
#name: zs
#age: 23
sex: true
birthday: 2019/02/12
绑定:
@Component //将此Javabean
@ConfigurationProperties (prefix=” student”)
public class Student
- @PropertySource:默认会加载applicat ion. properties/ application. yml文件中的数据;
例如@PropertySource (value= {”classpath: conf. properties” } )加载conf. properties
但是,@PropertySource 只能加载properties,不能加载yml
- @ImportResource
spring. boot 自动装配/自动配置.
spring等配置文件默认 会被spring boot 自动给配置好。
如果要自己编写spring等配置文件,spring boot 能否识别?默认不识别。
随机占位表达式
$ {random. uuid} : uuid
$ {random. value}随机字符串.
$ {random. int}: 随机整型数
$ {random. long}: 随机长整型数
$ {random. int(10)}: 10以内的整型数
$ {random. int[1024, 65536]}: 指定随机数范围
13.多环境的切换(profile)
a properties
b yml
c.动态切换环境
i:通过运行参数指定环境
(1) STS(Eclipse) : Run Configuration - Argument - program Argument
–spring. profiles. active=环境名
(2)命令行方式:
java -jar_ 项目名. jar –spring. profiles. active=环境名
ii:通过vm参数指定环境
STS(Eclipse) : Run Configuration - Argument - program Argument
-Dspring. profiles. active=环境名|
配置文件的位置
内部
properties和yml中的配置,相互补充;如果冲突,则properties优 先级高。
spring. boot默认能够读取的app1 ication. properties/ application. yml,这2个文件可以存在于以下
file:项目根目录/config
file:项目根目录
classpath:项目根目录/config
classpath:项目 根目录
注意:
a.如果某项配置冲突,则优先级从上往下
b.如果不冲突,则互补结合使用
外部:
在项目Run confi guration , argumenets:
– spr ing. config. location=文件路径
如果同一个配置同时存在于内部配置文件和外部配置文件,则外部>内部
通过命令行调用外部配置文件
java -jar项目. jar – spring. config. location=D:/ appl ication. properties
14.日志
日志框架UCL JUL jboss- logging, logback, log4j, 1og4j2, s1f4j…
spring boot默认选用slf4j, logback
spring boot默认帮我们配置好了日志,我们直接使用即可。
日志级别
TRACE< DEBUG< INFO<WARN< ERROR< FATAL<0FF
springboot默认的日志级别是info (即只打印info及之 后级别的信息
可以通过配置将日志信息存储到文件中logging. file=springboot. log存储到了项目的根目录中的springboot.log中
也可以指定具体的日志路径: logging. file=D:/springboot. log
也可以存储到一一个文件夹中,logging. path=D:/log/, 并且默认的文件名是spring. log
指定日志显示格式:
a.日志显示在console中I
b.日志显示在文件中
- springboot开发Web项目 (静态资源html css js )
new - spring starer -设置I (选择需要的场景,web)
springboot是-一个jar,因此静态资源就不是再存放到webapps中,
静态资源的存放路径通过WebMvcAutoConfiguration类的addResourceHandlers ()指定/webjars
spring boot将静态资源存入到jar包中,引入:http://localhost:8080/webjars/jquery/3.5.1/jquery.js
如何自己写静态资源,如何放到如spring boot中?将自己写的静态资源-> jar
推荐: springIboot约定:springboot将–些目录结构设置成静态资源存放目录
默认目录
“classpath:/META- INF/resources/”,” classpath:/resources/”,
”classpath:/static/“, ”classpath:/public/”
注意:在以上目录存放资源文件后,访问时不 需要加前缀,直接访问即可: http://localhost : 8080+名字
设置欢迎页:
welcomePageHandlerMapping
网站中网页标签的Logo是固定名字favicon.ico
自定义favicon. ico :阅读源码得知:只需要将 favicon. ico文件放入任意静态资源目录中即可
总结: 1. 通过源码发现静态资源的目录
2.用静态资源:只需要将静态资源放入以上目录即可
3.其他特定的文件(欢迎页、ico) ,只需要根据约定放入改 目录即可
动态资源: JSP (spring. boot默认不支持)
推荐:模板引擎thymeleaf
网页=模板+数据|
使用thymeleaf:代码在哪里写?
Thyme leafAutoCongifutation、
XxProperties
通过Thyme leafProperties源码得知:
使用thymeleaf只需要将文件放入目录: “classpath:/templates/“;文件的后缀:”. html”;
th就是替换原有html的值: th;html属性名=值 ;
/<p id=” pid” class=” pclass’> /
th:id=” $ {welcome}”th:class=” $ {welcome}”th:text=” $
th:xx_ (参 见第10章Attrubite Pre…. )
th:text 获取文本值(不转义)
th:utext获取文 本值
除了$以外其他符号?查看 第四章Standard Express….|