Spring Boot 入门总结

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
    D:/mvnrep
  • 在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中配置

    	org.springframework.boot
    	spring-boot-configuration-processor
    	true

2).application.yml

  • 格式:k:空格v,通过垂直对齐指定层次关系
  • 日期格式:birthday: 2018/12/6
  • map赋值(行内赋值):location: {province: 浙江,city: 杭州}
  • 数组、集合(行内赋值):hobbies: [足球,篮球]
  • 对象属性:使用层次赋值
    注:字符串可以不写引号,双引号会转义转义运算符,单引号不会转义
    注:集合赋值中的中括号可以省略

7.pom.xml

  • GAV(groupId artifactId version)描述信息(唯一标识项目)
  • jar(使用内置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.引入命名空间:,2.在标签中使用(直接拿值,不需要request前缀)

    前面赋值不成功时,默认输出该行!

  • 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
  • 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入门篇)