拷贝自网易云笔记,图片都是直接读取网易云笔记的格式有点乱
目录
第一章 Spring boot核心
第二章 配置使用
第三章 启动过程
第四章 Thymeleaf模板 与 JSP视图
第五章 静态资源及拦截器
第六篇 日志
创建spring boot项目(建议用idea 14.1以上支持创建,支持选中依赖的库)
生成的项目结构:
pom.xml 自动创建maven构建文件
Chapter1Application.java 一个带有main()方法的类,用于项目启动
Chapter1ApplicationTests.java Junit测试类
application.properties 空的properties文件 springboot项目的基本配置几乎都在这添加,例如
分析pom文件:
父依赖
有了这个当前项目就是spring boot项目了,spring-boot-starter-parent提供了默认的maven依赖
并且常用的包依赖可以省去version标签,
可以在C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom查看你当前版本的spring的默认依赖
如果不想用默认版本可以在
例如:
这样active就会用到5.13.3版本
自定义父依赖
并不是每个人都会用spring-boot-starter-parent 可以自己继承公司的标准parent,或者自己显示声明所有的依赖。(具体见maven篇)
起步依赖 spring-boot-starter-xx
例如:
spring-boot-starter-web
该依赖实际上有依赖了很多其他的web相关的依赖,这样可以简化配置。
起步依赖实际上是一个Maven项目对象模型(project object model,pom),定义了对其他库的依赖
Spring Boot Maven 插件
(
这个插件提供了很多功能:
1.把项目打包成一个超级JAR(uber-JAR,包含各子model),包括把应用程序的所有依赖打入JAR内,并为JAR添加一个描述文件,其中内容可以用java -jar运行程序。
2.搜索public static void main()类标记为可运行类
应用程序入口
可以新建控制类
其中@SpringBootApplication是spring的核心注解,目的是开启自动配置。
@resetController注解等价于@controller和@responsebody的结合,使这个注解里的类的方法都已json的格式输出。(spring里的注解类似的还有GetMapping之类的)
Spring boot项目的四种启动方式
1.Application
2.用maven启动
运行:mvn spring-boot:run
idea页面(我的没有,版本太低)
3.基于jar/war的命令启动
进入项目目录下打包:mvn clean package 打包生成jar包
运行:使用java -jar xxx.jar
或者war包也行 pom里设置
打包方式好几种还有在lifecycle中的package和plugins中的war都可以
4.war包直接扔在tomcat里,启动tomcat(真实部署的时候)
自定义属性
在application.properties 里添加 com.stone.name=cuihao
@Value("${com.stone.name}")
private String name;
属性太多使用ConfigBean.java类
在类之前加注解
@ConfigurationProperties(prefix = "com.stone")
在入口类前加注解
@EnableConfigurationProperties({ConfigBean.class})
使用:
参数间可以引用:
服务端口配置
server.port = 9090
由于springboot是基于jar运行的 所以作用类似于java -jar xxx.jar --server.port = 9090
Spring Boot可以从多种属性源获取属性
配置文件优先级
application.properties和application.yml
1.内置的优先级高于外置
(config文件内的优先级高于config文件外的)
2.在同一个位置时,application.yml的优先级要高于application.properties
profile-多环境配置
生产日志-高级别生成日志文件
开发日志-控制台输出日志就行
在SpringBoot中只要将配置文件改成 application-{profile}.properties格式就可以,profile为环境标识
注:应用多环境配置时,在程序里引用properties里的自定义的属性也需要区分一下
其中application-dev.properties是开发环境的配置,端口号为8080;application-prod.properties是生产环境的配置,端口号为8081。
在部署的时候命令如下:
java -jar stone-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
这样就会部署生产环境了
进入@SpringBootApplication
只有三个注解起作用,换言之,靠着三个注解就可以再建一个启动类
三个注解各自的作用
@Configuration
@componentscan
@EnableAutoConfiguration
复习:SpringMCV中 用XML和JAVA配置区别
先说不支持的JSP,官方不推荐JSP做视图,现在只是兼容,打war就不包含jsp,配置jsp过程如下:
1.提供依赖 两个jar包 org.apache.tomcat.embed 和 javax.servlet.jsp.jstl
2.properties里配置 prefix,suffix等配置(不像spring mvc还有专门的配置文件)
3.创建web-inf目录及jsp文件
4.controller里的ModelAndView
5.要用到SpringApplicationBuilder类添加启动类 ,因为springboot内置的服务器不支持jsp,所以要外部部署,那么main()类就不会起作用。
问:为什么用Thymeleaf(以及Freemark)?freemark和thymeldaf不是单独拿出来嵌入到html页面吗?
答:为了实现动态 待续。。。。。。。。。。
使用方式
1.配置pom 添加Thymeleaf依赖 spring-boot-starter-thymeleaf
点进去可以发现,这个依赖还依赖了spring-boot-starter-web 所以只添加这一个依赖就可以了
2.配置porperties
3.用@Controller注解,如果用@RestController注解就不会返回html页面,而是只返回一个String字符串,此例中只会返回“goodlist”字符串(无法返回json数据)
静态资源存储位置如下:
classpath:MATE-INF/resources
classpath:/resources
classpath:/static
classpath:/public
其中resources的优先级比static要高。MATE-INF/resources中未显示
优先级顺序为:META-INF/resources > resources > static > public
在不做任何配置时:
在以上文件任意一个内随便放一个index.html文件,进入项目localhost:8080时会进入index.html
也可直接获取静态文件如:
application里配置
静态资源的访问配置标签有两个:spring.mvc.static-path-pattern 和spring.resources.static-locations
前者是映射路径,后者是静态资源在项目节后中的路径。
默认值为
classpath:MATE-INF/resources,classpath:/resources,classpath:/static,classpath:/public
用逗号隔开,当我将他的值改为/stone111/**时,端口号要加stone111才可以访问静态资源
重写addResourceHandlers配置静态资源
项目结构:
访问路径:
把personResource2换成personResource1是一样的结果。注:经测试WebMvcConfigurerAdapter类里的配置优先级高于properties里的配置
重写addViewController配置页面跳转
拦截器HandlerInterceptor配置
https://blog.csdn.net/fanxing1964/article/details/81486409
http://www.cnblogs.com/zheting/p/6707041.html
常用的日志框架有以下四种:
目前比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。
Logback必须配合Slf4j使用。因为Logback和Slf4j是同一个作者
Slf4j 定义了统一的日志抽象接口,而真正的用哪种框架在运行决定————他提供了各类日志框架的binding。
如果使用Spring Boot在不加配置的情况下,会使用Logback框架输出INFO级别的的日志至控制台
日志具体的输出格式存储路径等使用细节,网上搜吧