SpringBoot完整应用梳理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fanxing1964/article/details/82952541

拷贝自网易云笔记,图片都是直接读取网易云笔记的格式有点乱

目录

第一章 Spring boot核心

第二章 配置使用

第三章 启动过程

第四章 Thymeleaf模板 与 JSP视图

第五章 静态资源及拦截器

第六篇 日志


第一章 Spring boot核心

  1. 自动配置(约定优于配置原则,自动配置常见的配置,需要自己动手的就少了)
  2. 内置微服务器
  3. 起步依赖 maven
  4. 可以命令行页面操作无需项目结构    (girl为项目名称)

创建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的默认依赖

如果不想用默认版本可以在<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里的注解类似的还有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里设置<packaging>war</packaging>     java -jar命令也可以运行war包

打包方式好几种还有在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配置区别

第四章 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里配置

静态资源的访问配置标签有两个: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

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

  • 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级别的的日志至控制台

日志具体的输出格式存储路径等使用细节,网上搜吧

猜你喜欢

转载自blog.csdn.net/fanxing1964/article/details/82952541