一.什么是微服务
一个项目可以由多个小型服务构成,那么这些小型服务就是微服务。比如一个简单的支付功能等等。
二.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:无名}
则会使用默认值: 无名