springboot学习(1)

一.什么是微服务

一个项目可以由多个小型服务构成,那么这些小型服务就是微服务。比如一个简单的支付功能等等。

二.springboot的介绍

springboot可以快速开发微服务模块,其作用有

①简化j2ee的开发
②可以整合整个spring技术栈(比如springmvc,spring)
③可以整合j2ee技术(比如整合mybatis,struts2)

三.STS目录层级介绍

在这里插入图片描述

特点:
①spring boot内置了tomcat,并且不需要打成war再执行。
②spring boot将各个应用/三方框架,设置成了一个个“场景”starter,以后要用哪个,只需要引入那个场景即可。选完之后,spring boot就会将该场景所需要的所有依赖自动注入。例如选择“web”,spring boot就会将web相关的依赖(tomcat,json)全部引入本项目

四.几个注解介绍

@SpringBootApplication表示被注解的类是spring boot的主配置类。该注解又包含很多注解,其中有
1.@SpringBootConfiguration:包含@Configuration,表示“配置类”。有两层意思:

①该类是一个配置类
②加了@Configuration注解的类,会自动纳入Spring容器(@Component)

2.@EnableAutoConfiguration:使spring boot可以自动配置,原则:约定优于配置。即可以找到@SpringBootApplication所在类的包。就会将该包及所有的子包全部纳入spring容器。
3.总结一下:我们在编写项目时,一般会对自己写的代码以及三方依赖进行配置。但是springboot会自动帮我们配置。怎么帮我们配置呢?
对于自己写的代码,springboot通过@SpringBootConfiguration自动帮我们配置。
对于三方依赖,springboot通过某个配置文件进行声明,然后通过@EnableAutoConfiguration开启使用即可
我画了个图
在这里插入图片描述
就差不多这个意思
后面还有很多关于配置文件功能的学习,这里就不再说了

五.自动装配

1.都有哪些conditional呢?

conditionalOnxxx是条件的意思,后面跟具体什么条件。

在这里插入图片描述

2.如何知道springboot开启了哪些自动装配,禁止了哪些自动装配:

在application.properties中输入debug=true;
在这里插入图片描述

六.配置文件

作用:可以使用配置文件对默认的配置进行修改。比如刚刚提到的application.properties就是一个配置文件。还有一个配置文件是application.yml

1.总体介绍

application.properties写法就是k=v,键值对
application.yml:yaml。官网解释:不是一个标记文档(之前的xml是一个标记文档)。
比如标记文档是这样

<server>
	<port>8882</port>
</server>

如果是yaml就要这样写

server:
	port: 8882

所以yml文件要注意:

①形式就是 k:空格v。(注意一定要加空格)
②同时yaml文件还要注意缩进。(通过垂直对齐指定层次关系)
③默认可以不写引号,但是只有双引号会将其中的转义符进行转义。

2.通过yaml对属性进行赋值

使用示例
①首先定义Student类

@Component //将此javabean放入spring容器
@ConfigurationProperties(prefix="student")
public class Student {
    
    
	private String name;
	private int age;
	private Map<String,Object> location;
	private String[] hobbies;
	private List<String> skills;
	@Override
	public String toString() {
    
    
		return "Student [name=" + name + ", age=" + age + ", location=" + location + ", hobbies="
				+ Arrays.toString(hobbies) + ", skills=" + skills + "]";
	}
	
	
}

注意这些注解
②然后在yml文件中进行配置,注意#后面的和没有加#是等效的

student:
   name: zhangsan
   age: 23
   location: #{
    
    province: 陕西,city: 西安,zone: 莲湖区}
        province: 陕西
        city: 西安
        zone: 莲湖区
   hobbies: [足球,篮球]
      #- 足球
      #- 篮球
   skills:
        [足球,编程]
      #- 编程
      #- 金融
#数组和集合写法是一样的

application.properties和yaml是一样的,它能赋值,application.properties也可以

集合(Set/List,数组)用中括号装值,给Map和对象中的属性赋值一般用大括号
中括号可以省,大括号不能省

3.通过Value注解对属性进行赋值

除了使用配置文件赋值之外,还可以使用Value注解(全部要加双引号),比如:

@Component //将此javabean放入spring容器
//@ConfigurationProperties(prefix="student")
public class Student {
    
    
	@Value("ww")
	private String name;
	@Value("22")
	private int age;
}

@ConfigurationProperties(prefix=“student”)和@Value(“xx”)二者可以互补。但是有区别:

@ConfigurationProperties(prefix=“student”) @Value(“xx”)
批量注入 单个注入
支持松散语法(nickName和nick-name是等效的) 不支持松散语法
不支持springEL 支持springEL
支持JSR303校验 不支持JSR303校验
前者支持注入复杂类型 不支持注入复杂类型

(简单类型是8个基本类型和String/Date。除了这些都是复杂类型)

4.@PropertySource

不给他赋值则默认会加载application.properties/application.yml文件中的数据。如果给这个注解赋值则会加载指定文件中的数据,但是它只能加载properties中的,不能加载yml

5.@ImportResource

spring等配置文件,默认会被spring boot自动给配置好,也就是spring boot的自动配置。如果要自己编写spring等配置文件,spring boot默认无法识别。如果需要识别,则需要在springboot主配置类上,通过@ImportResource指定配置文件的路径。
虽然这样可行,但是不推荐手写spring配置文件,而是推荐使用注解方式进行配置

①.配置@Configuration。加上它表明此类是一个配置类
②.配置@Bean。配置一个东西就加一个Bean

6.占位符

①比较常见的随机占位符表达式
在这里插入图片描述
②引用变量值
比如在yml中

student:
	uname: x
	name:${
    
    student.user.name}

这里实际引用的是properties中的student.user.name=xxx
假如引用这里写错了,比如写成了

name:${
    
    student.user.name2:无名}

则会使用默认值: 无名

猜你喜欢

转载自blog.csdn.net/afdafvdaa/article/details/109621346