目录

第一章 Spring boot核心

第二章 配置使用

第三章 启动过程

第四章 Thymeleaf模板 与 JSP视图

第五章 静态资源及拦截器

第六篇 日志


第一章 Spring boot核心

1.自动配置(约定优于配置,自动配置常见的配置)

2.内置微服务器

2.起步依赖 maven

3.可以命令行页面操作 无需项目结构    (girl为项目名称)

    服务启动方式:

    1.Application 启动

    2.mvn 启动    进入项目    ->    girl mvn spring-boot:run

    3.jar/war包启动方式   

打包: compile,package    ->    girl mvn install(安装jar包到本地仓库)    

       启动:target    java    -jar    girl-0.0.1-SNAP.jar

 

创建spring boot项目(建议用idea 14.1以上支持创建,支持选中依赖的库)

生成的项目结构

pom.xml    自动创建maven构建文件

Chapter1Application.java    一个带有main()方法的类,用于项目启动

Chapter1ApplicationTests.java    Junit测试类

application.properties    空的properties文件    springboot项目的基本配置几乎都在这添加,例如                                  

分析pom文件

 

 

1父依赖

 

有了这个当前项目就是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的默认依赖

 

如果不想用默认版本可以在<properties>里覆盖,后面会讲到这个标签

例如:

<properties>

    <acitvemq.version>5.13.3<acitvemq.version>

</properties>

这样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 插件

(<build>和<plugins>标签见maven篇)

这个插件提供了很多功能:

1.把项目打包成一个超级JAR(uber-JAR,包含各子model),包括把应用程序的所有依赖打入JAR内,并为JAR添加一个描述文件,其中内容可以用java -jar运行程序。

2.搜索public    static    void    main()类标记为可运行类??????

 

应用程序入口(启动)

可以新建控制类

其中@SpringBootApplication是spring的核心注解,目的是开启自动配置。

@resetController注解等价于@controller和@responsebody的结合,使这个注解里的类的方法都已json的格式输出。(spring里的注解类似的还有@)

 

四种启动方式

1.application

2.用maven:

运行:mvn    spring-boot:run

idea页面(我的没有,版本太低)

 

3.jar包

 

进入项目目录下运行:mvn clean package 打包生成war包

使用java    -jar

 

或者war包也行 pom里设置<packaging>war</packaging>     java -jar也可以运行war包

打包方式好几种 还有在lifecycle中的package和 plugins中的war都可以

 

4.直接扔在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配置区别

 

第四章 Thymeleaf模板 与 JSP视图

先说不支持的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里配置 & 静态资源处理器addResourceHandlers

静态资源的访问配置标签有两个:spring.mvc.static-path-pattern   和spring.resources.static-locations

前者是映射路径,后者是静态资源在项目节后中的路径。

默认值为

 classpath:MATE-INF/resources,classpath:/resources,classpath:/static,classpath:/public

用逗号隔开,当我将他的值改为/stone111/**时,端口号要加stone111才可以访问静态资源

 

也可以使用继承WebMvcConfigurerAdapter类在java类里配置,

配置:

项目结构:

访问路径:

把personResource2换成personResource1是一样的结果。注:经测试WebMvcConfigurerAdapter类里的配置优先级高于properties里的配置

 

页面跳转addViewController

 

 

 

拦截器HandlerInterceptor 

略(登录验证&权限控制篇)

第六篇 日志

https://www.cnblogs.com/chenhongliang/p/5312517.html

http://www.cnblogs.com/zheting/p/6707041.html

 

常用的日志框架有以下四种:

Log4j :apache基金会的项目,以及升级版log4j 2

Commons Logging:apache基金会的项目,一套日志接口(Spring Framework使用的是日志组件就是Commons logging)。

 

Slf4j 类似于Commons Logging,是一套简易Java日志门面(Facade),本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。

Logback 一套日志组件的实现(Slf4j阵营)

 

目前比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。

Logback必须配合Slf4j使用。因为Logback和Slf4j是同一个作者

 

Slf4j 定义了统一的日志抽象接口,而真正的用哪种框架在运行决定————他提供了各类日志框架的binding。

 

如果使用Spring Boot在不加配置的情况下,会使用Logback框架输出INFO级别的的日志至控制台。

10-06 17:48