Springboot 学习笔记

Springboot 学习笔记

微服务

微服务是,把所有的功能独立做成模块,模块之间用http通信,springboot负责将所有的功能做成模块,springcloud负责所有模块中间的通信,springcloud data flow用来处理流式数据计算、批处理。

Helloworld

将项目打成jar包,并且用java -jar命令去运行它。

引入的插件有:

<plugin>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

里面用到了启动器,启动器是面对各种业务场景的依赖的汇总,比如我们需要满足邮件功能,那么我要导入的依赖就是启动器-邮件。

配置文件

是什么?

  • application.properties
  • application.yml

有啥用?

修改springboot自动配置的默认值,比如端口号等等。

yml和标记语言脱不了关系,它比xml更加简洁,xml需要配标签,而yml是以数据为中心,不需要配那么多标签。

如何生效?

yml

在yml配置好后,在类名上面加上@ConfigurationProperties(prefix = “配置文件中的根级名字”)标签,可以让配置文件生效。

.properties

和yml差不多,但是要注意的是,需要改变文件的编码方式,要不然会出现乱码: file encodings =》utf-8,后面的√打上。

如果想要在配置文件yml中出现提示,需要根据idea的提示去引入一个依赖。

不用配置文件怎么配置

在javaBean的类名上不加@ConfigurationProperties注解,而是直接在对应的属性上加@Value注解。

啥时候用@Value或@ConfigurationProperties?

当只需要拿到单独的属性的时候,就用@value;专门写了一个javaBean和配置文件进行映射的时候,用@ConfigurationProperties。

如何将配置文件分离开?

如果我们一直将配置文件信息写在.properties里面,那么会很长,我可以将一些配置信息单独拉出去写一个配置文件,在javaBean上加注解@PropertySource(value = {“classpath:文件路径名”})和@ConfigurationProperties(prefix = “前缀名”),可以加载多个配置文件。

如何让我们写的xml配置文件生效?

利用注解@ImportResource(locations = {“classpath:文件位置”}),这个注解加在主启动类上面:xxxxApplication。

如何使用配置类?

使用@Configuration注解和@Bean注解就可以直接将配置类的属性添加到容器当中。

配置文件存放位置的优先级?

配置文件可以放在项目的很多地方,不同的地方有不同的优先级,比如高优先级的地方有配置文件,低优先级的地方也有配置文件,那么高优先级会覆盖低优先级的。

优先级为:

  1. 项目根目录下的config文件下的配置文件;
  2. 项目根目录下的配置文件;
  3. classpath目录下的config文件下的配置文件;
  4. classpath目录下配置文件;

不同位置的配置文件是互补的,相同的设计才取决于高优先级的配置文件。

当项目打成jar包后,如何修改配置的参数比如:端口号、url路径?

用命令行的方式去完成配置文件的修改:

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc

多个配置用空格分开; --配置项=值

日志

SpringBoot选用 SLF4j和logback;

如何将各种框架的日志统一使用slf4j?

1、将系统中其他日志框架先排除出去;

2、用中间包来替换原有的日志框架;

3、我们导入slf4j其他的实现

日志级别?

trace

Springboot默认的日志级别是info及以上,这个级别可以在.properties文件里面修改:logging,level.包名=日志级别

日志存放位置?

在.properties文件里面修改:logging.file=文件路径(可以存放在项目根目录也可以加盘符去存在指定位置)。

如何指定日志框架的配置文件?

类路径下放上每个日志框架自己的配置文件就可以了,springboot就不会用自己默认的框架了

不同配置文件的环境下如何指定不同的日志框架配置文件呢?

改名字为:logback-spring.xml,在日志文件名加上==-spring==,再到日志框架的配置文件里使用标签去设置日志生效的环境。

WEB开发

springboot对静态资源的映射规则

由于springboot自动给我们配置了很多文件,我们的springboot项目里面不像springmvc一样有web-info文件夹,所以根据查看到的管理静态资源映射的类,我们要通过导入webjar的方式去存放静态资源。

1)、所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;

​ webjars:以jar包的方式引入静态资源;

http://www.webjars.org/
Springboot 学习笔记_第1张图片
localhost:8080/webjars/jquery/3.3.1/jquery.js

在访问的时候只需要写webjars下面资源的名称即可
		<dependency>
			<groupId>org.webjarsgroupId>
			<artifactId>jqueryartifactId>
			<version>3.3.1version>
		dependency>

2)、"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射

"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/", 
"classpath:/public/" 
"/":当前项目的根路径

localhost:8080/abc === 去静态资源文件夹里面找abc

3)、欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射;

​ localhost:8080/ 找index页面

4)、网页头像,所有的 **/favicon.ico 都是在静态资源文件下找;

thymeleaf渲染的页面放在哪里?

查看自动装配的类发现,默认放在classpath:template/下。

扩展springmvc

编写一个配置类(@Configuration),是WebMvcConfigurerAdapter类型;不能标注@EnableWebMvc;

既保留了所有的自动配置,也能用我们扩展的配置;

//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // super.addViewControllers(registry);
        //浏览器发送 /atguigu 请求来到 success
        registry.addViewController("/atguigu").setViewName("success");
    }
}

参考资料

尚硅谷B站Springboot学习视频

你可能感兴趣的:(Springboot 学习笔记)