javase:OOP
MYSQL:持久化
html+css+js+jquery+框架:视图
Javaweb:独立开发MVC三层架构
SSM:框架,配置复杂,开发流程简化【打war包,tomcat运行】
SpringBoot:打jar包内嵌tomcat,微服务架构
Springcloud;
SpringBoot:
①编写配置 yaml
②自动装配原理
③集成web开发,业务核心
④集成数据库Druid
⑤分布式开发Dubbo+zookeeper
⑥swagger接口文档
⑦任务调度
⑧SpringSecurity:Shiro
SpringCloud:
①微服务
②springcloud入门
③Restful风格
④Eureka服务注册与发现
⑤负载均衡Nginx,Feign
⑥HyStrix容灾
⑦Zuul 路由网关
⑧git
SpringBoot初始结构详解
官网:https://start.spring.io/直接下载的方法,记得选一个springweb的依赖,一般都是IDEA直接创建
自动装配的原理
pom.xml
spring-boot-dependencies:核心依赖在父工程中
我们在写引入springboot依赖的时候,就是因为有版本仓库
启动器
spring-boot-starter 是SpringBoot的启动场景;
比如spring-boot-starter-web,就会帮我们导入web环境所有的依赖
还有很多种类型的启动器,详情见官网
主方法中:
第一个,@SpringBootApplication :标注这个类是一个SpringBoot的应用,启动类下的所有资源被导入
点进去有两个:
① @SpringBootConfiguration
@Configuration : 标记当前类是一个spring配置类
@Component : 是一个Spring的组件
② @EnableAutoConfiguration 开启这个类的自动配置
@AutoConfigurationPackage 自动配置包【】
@Import({AutoConfigurationImportSelector.class}) 将所有符合条件的类配置信息导入
③ ComponentScan 扫描主类所在的同级包以及下级包里的Bean
有一个jar包
Maven:org.springframework-boot:spring-boot-autoconfigure:2.2.0RELEASE
包下的META-INF文件中有一个spring.factories文件,里面记录了加载了所有的自动配置类
springboot的所有的自动配置都是在启动的时候扫描并加载:spring.factories所有的自动配置类
但是并不是全部都加载,要判断是否成立,只要导入了对应的start,就有对应的启动器,有了启动器,自动装配才会生效然后再配置成功
最关键的要属@Import(EnableAutoConfigurationImportSelector.class),借助EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器:通过@Import(AutoConfigurationImportSelector.class)导入的配置功能,
AutoConfigurationImportSelector中的方法getCandidateConfigurations,得到待配置的class的类名集合,这个集合就是所有需要进行自动配置的类,而是是否配置的关键在于META-INF/spring.factories文件中是否存在该配置信息
第二个,调用的主方法中,SpringApplication.run()是将springboot应用启动
SpringApplication.run(Springboot01HelloworldApplication.class, args);
这里其实是开启了一个服务,方法主要是SpringApplication的实例化和run方法的执行
SpringApplication实例化:
①主要是判断项目是普通项目还是web项目
②加载所有初始化器
③找出程序监听器
④推断main方法的定义类,找到运行的主类
run方法开启之后会开启一个服务
《全面接管SpringBoot的配置》
SpringBoot的配置
【配置文件】
application.yaml
语法结构:key:空格value
主要是针对SpringBoot的默认配置可以进行修改,对空格非常敏感
server:
port:
#对象
student:
name: zhangsan
age: 3
#行内写法
student1: {
name: lisi,age: 3}
#数组
pets:
- cat
- dog
- pig
pets2: [cat,dog,pig]
【yaml可以直接给实体类进行赋值@ConfigurationProperties(prefix = “xx”)】
在SpringbootApplication类的同级创建POJO目录并创建两个实体类【注意一定在有参构造已写的情况下要写无参构造】
并且在resources下创建application.yaml配置文件做出相应类的配置,注意一定要与实体类属性对应【实测如配置多写一样可以实例化】
测试方法进行测试
实体类:
//这个是标明它是游离控制业务持久层外的Spring组件,请求框架一同进行注入
@Component
//这个是为了和yaml文件进行匹配,把名字传过去告诉框架这是它的属性请求注入
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private boolean ishappy;
private Date birth