为什么80%的码农都做不了架构师?>>>   

@Controller和@RestController

示例工程springboot-learn

@Controller 注解使用下,返回的字符串默认是一张页面的名字。

返回的是index.html页面

@RestController 注解使用,默认是返回体。相当于加了@ResponseBody

返回的是字符串”index.html”

资源文件相关注解

示例工程springboot-learn和springboot-mybatis

Springboot会默认读取application.properties配置文件。

@Configuration:标记某个实体类为资源文件,在启动时实例化。

@PropertySource("classpath:pro.properties"):当标记在某个类上面的时候,如果该类在启动时需要实例化,则通过该注解指定读取资源文件pro.properties,类中使用@Value的方式注入。

@ConfigurationProperties(prefix = "myProps"):根据指定的前缀读取文件信息并绑定到实体类上面。

其中,String类型的一定要使用setter来接受属性值,集合不需要。该注解一般针对yml配置文件绑定属性的时候用的较多。

对应ylm配置:

@ImportResource:引入xml配置文件(springMVC的<bean>方式配置)

如图所示:改class有两个注解,@Configuration标记改类为资源类,在启动时实例化,实例化的时候由于用@ImportResource注解引入了资源文件,所以会解析该资源文件。如果不加@Configuration,则该类不会实例化,就不会引入资源文件。总的来说,改class并没有用,写这个类主要是为了引入一个资源文件,结构好看些。所以将该注解直接放在启动类上面也可以。类似如图:

application.properties

静态资源文件夹

Server.port:配置服务器端口号,其它相关配置在类org.springframework.boot.autoconfigure.web.ServerProperties中可以找到。

spring.resources.staticLocations:配置资源文件的默认路径,和以下配置方式是一样的,/**暂时还没没搞懂啥情况,测试中无论咋配置结果都一样,网上表示配置/**会覆盖掉默认的/static等资源目录,/path/**则不会覆盖掉默认的,只是在默认的路径中追加。但是实际测试并不是这样。

spring.profiles.active:加载指定后缀的配置文件。

资源文件加载顺序:

如果在程序运行的时候指定了其他资源文件,资源文件加载的顺序:

@ProperSource指定 > 默认application.properties > spring.profiles.active指定

即:最先加载@ProperSource注解指定的,然后加载默认的,最后加载默认配置中使用spring.profiles.active指定的。

这个加载顺序在是springbootce测试的时候有详细说明,看“Junit单元测试.docx”,工程springbootJunit。

打包时拷贝静态资源

种类

targetPath

会被打包的文件夹

Idea路径

Jar路径

资源访问情况

第一种

只会打包springboot配置了的静态资源文件夹,如resources/static,

位于target/classes路径下

位于BOOT-INF/classes路径下

Springboot自己静态文件夹下的会被自动打包,Idea运行或者jar包运行都能访问

第二种

static/

会将<directDictory>指定的文件夹下面的所有内容全部打包

target/classes/static

BOOT-INF/classes/static

都能访问

第三种

BOOT-INF/classes/static/

会将<directDictory>指定的文件夹下面的所有内容全部打包

target/BOOT-INF/classes/static

BOOT-INF/classes/static

jar宝运行可以访问,idea运行不能访问

第四种

不配置<resources>

会将resources下所有文件及其文件夹打包到classes下

Target/classess

BOOT-INF/classes

如果resources下包含的文件夹是静态文件夹,Idea运行或者jar包运行都能访问

假定dist目录中有index.html,第三种中idea运行时是不能访问到index.html的,但是打成jar包运行就能访问到。

原因:idea在运行的时候target下classes就相当于jar包中的BOOT-INF/classes(可以看第二种情况),但是在第三种情况中idea的路径变成了target/BOOT-INF/classes而不是target/clasess,所以会出现访问不到的情况。

*.*:当前目录下所有文件,不包含文件夹

**/**:当前目录下所有文件,包含文件夹

乱码:

配置默认读取properties文件的编码格式

spring.messages.encoding=UTF-8

关于乱码这个问题,在后边测试的时候不起作用了,建议还是讲中文转成unicode编码放配置里头,就不会乱码。

日志

logging.path:配置日志文件文件路径

logging.file:配置日志文件的名字(必须包含路径,否则路径配置项无效)

如果logging.path=logs3,logging.file=myapp.log,只会在当前目录下生成myapp.log

如果只配logging.file=lgs3/myapp.log,效果跟图示效果一样,会创建logs3文件夹并在其中生成日志文件myapp.log。

拦截器

示例工程:springboot-learn

继承WebMvcConfigurerAdapter,需要加注解@Confifuration才会生效。

拦截规则中测试结果是/**和/*都是拦截所有,一般都用/**。

AddInterceptor方法的参数可以看到是HandlerInterceptor类型。

这里需要配置自定义的拦截器

MyIntercepter:

MyIntercepter2:

方法说明:

preHandle:在controller方法之前执行

postHandle:在controller方法之后执行

afterCompletion:只有在preHandle方法返回true的时候才执行

执行顺序:

根据拦截器的配置顺序执行。

图中的true是preHandle的返回值,只有当返回值为true的时候才执行下一个拦截器,否则直接中断。

afterCompletion是在preHandle和postHandle都执行完之后再执行,顺序是反向的。

Controller:

访问localhost:8080/test,localhost:8080/test1,看控制台输出:

over~~~

转载于:https://my.oschina.net/wtkid/blog/2244948

sprintboot-learn(一)相关推荐

  1. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  2. Blender赛车动画制作学习教程 Learn Race Car Animation with Blender

    使用Blender 2.93创建您自己的惊人汽车动画 你会学到什么 Blender的界面和导航 建模 UV制图 材料 动画 照明设备 渲染 合成 要求 下载并安装Blender.免费下载和免费用于任何 ...

  3. Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

    要求 下载并安装Blender.免费下载和免费用于任何目的. 描述 加入我的动画课程. 在本课程中,我将从头开始讲述在Blender中创建动画场景的过程. 从第一步到最终渲染.在这个课程中,我们将使用 ...

  4. Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#

    游戏开发变得容易了.使用Unity学习C#并创建您自己的3D平台! 你会学到什么 学习现代通用编程语言C#. 了解Unity中3D开发的功能 发展强大的可转移的解决问题的技能 了解游戏开发过程 了解面 ...

  5. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  6. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity

    Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity MP4 |视频:h264,1280x720 |音频:A ...

  7. Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D C#: Learn To Code Making 3D Games

    Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D & C#: Learn To Code Making 3D Games Full Guide To Unit ...

  8. 读书笔记2013第10本:《学得少却考得好Learn More Study Less》

    <学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...

  9. The Road to learn React书籍学习笔记(第三章)

    代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() constructor() 构造函数只有在组件实例化并插入到 DOM ...

  10. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

最新文章

  1. Tomcat问题 无法启动
  2. Webkit Flex伸缩盒模型属性备忘
  3. 二、Netty服务端/客户端启动整体流程
  4. artdialog子弹窗关闭父弹窗
  5. HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)
  6. Java安装环境变量配置-day1
  7. Office groove系统的术语
  8. Sentence-BERT: 一种能快速计算句子相似度的孪生网络
  9. 计算机三级网络技术路由,2009计算机三级网络技术:如何上网高效率宽带路由优化技巧放送...
  10. IIS Express加入MIME映射
  11. CSS面试题汇总(三)
  12. Eclipse的版本、下载网址和安装
  13. 【网络技术题库梳理11】第三道大题——DHCP报文
  14. 更换帝国cms默认文章内容编辑器fckeditor
  15. Python基础之面向对象
  16. 单片机:51最小单片机系统
  17. 进制转换C语言实现(十进制转换为任意进制)
  18. 星期五五–大数据,Doppio和假Linus Torvalds
  19. JavaScript 调用Bomb后端云
  20. 双胺基修饰MOF/GO烯复合材料|硫修饰Cu基MOF材料|磁性纳米多孔碳材料FeO@C|mof材料的复杂定制

热门文章

  1. Tomcat性能调优-JVM监控与调优
  2. Java虚拟机学习(6):对象访问
  3. 实现一个反向传播人工神经网络
  4. 让你的名字在百度排名前列
  5. 模糊决策--机器人壁障
  6. 用VuePress来搭建一个极简的静态网站
  7. 《计算机网络教程 自顶向下方法》 第一章
  8. C++中的值传递、指针传递、引用传递
  9. Nginx+Keeplived双机热备(主从模式)
  10. www.pythonchanlleges.com