SpringBoot01
SpringBoot优点
- 创建独立Spring应用。
- 内嵌web服务器,默认使用Tomcat。
- 自动starter依赖,简化构建配置,后面会具体讲解。
...
SpringBoot缺点
- 人称版本帝,迭代快,需要时刻关注变化
- 封装太深,内部原理复杂,不容易精通
微服务
- 微服务是一种架构风格
- 一个应用拆分为一组小型服务
- 每个服务运行在自己的进程内,也就是可独立部署和升级
- 服务之间使用轻量级HTTP交互
- 服务围绕业务功能拆分
- 可以由全自动部署机制独立部署
- 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
分布式的困难
- 远程调用,一般使用http通信。
- 服务发现,就是看哪些服务是可用的。
- 负载均衡,让多台服务器动起来
- 服务容错,各种错误情况下的处理方式
- 配置管理,配置中心,修改配置让服务们自己同步
- 服务监控,多个服务以及云平台的资源消耗和健康状况
- 链路追踪,一个复杂的业务流程可能需要连续调用多个微服务,我们需要记录一个完整业务逻辑涉及的每一个微服务的运行状态,再通过可视化链路图展现,帮助软件工程师在系统出错时分析解决问题,常见的解决方案有Zipkin,SkyWalking
- 日志管理,微服务架构默认将应用日志分散保存在每一个微服务节点上,当系统进行用户行为分析、数据统计时必须收集所有节点日志数据,非常不方便。这时候我们需要一个独立的日志平台,收集所有节点的日志数据并可方便对其进行汇总分析,常见的解决方案有ELK,EFK。
- 任务调度
自动配置原理
1 、依赖管理
- 父项目做依赖管理
- 开发导入starter场景启动器
- 无需关注版本号,自动版本仲裁
- 可以修改默认版本号
2、自动配置
- 自动配好Tomcat
- 引入Tomcat依赖。
- 配置Tomcat
- 自动配好Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景
- 默认的包结构
- 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
- 无需以前的包扫描配置
- 想要改变扫描路径,@SpringBootApplication(scanBasePackages="com.atguigu")
- 或者@ComponentScan 指定扫描路径
- 各种配置拥有默认值
- 默认配置最终都是映射到某个类上,如:MultipartProperties
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
- 按需加载所有自动配置项
- 非常多的starter
- 引入了哪些场景这个场景的自动配置才会开启
- SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面
3、组件添加
- 基本使用
- Full模式与Lite模式
- 示例
- 最佳实战
- 配置 类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断
- 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式
@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
2、配置类本身也是组件
3、proxyBeanMethods:代理bean的方法
Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用Full模式默认。其他默认是否Lite模式
@Bean、@Component、@Controller、@Service、@Repository
- @controller 控制器(注入服务)用于标注控制层,相当于struts中的action层
- @service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理
- @repository(实现dao访问)用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
- @component (把普通pojo实例化到spring容器中,相当于配置文件中的
)泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@ComponentScan、@Import
- @Import({User.class, DBHelper.class}) 给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Conditional
条件装配:满足Conditional指定的条件,则进行组件注入
原生配置文件引入 @ImportResource
转载请注明出处:https://www.cnblogs.com/stu-jyj3621