JavaWeb开发06-原理-Spring配置优先级-Bean管理-SpringBoot原理-Maven继承和聚合-私服

一、Spring配置优先级

不同配置文件,配置同一个属性谁有效
properties>yml>yaml

命令行参数>Java系统属性

项目打包后要改变属性:

红色是Java系统属性,绿色是命令行参数

二、Bean管理

1.获取bean

获取IOC容器:applicationContext就是IOC容器对象

IOC容器中bean是默认单例的只有一个,这样三个获取的bean是同一个

2.bean作用域

单例还是多例取决于作用域
关注于Spring支持前两种作用域

默认单例的bean在容器启动的时候就会实例化,加lazy注解就会在第一次使用的时候才会实例

3.第三方bean

想要对Java自带的包中的类交给IOC管理,但是是只读的,所以得在使用第三方bean

可以放在config包中,设置一个专门的类来集中分类配置

没有设置bean的名字就是默认方法名

三、SpringBoot原理

Spring Framework依赖配置很麻烦,Spring Boot 简化了操作

1.起步依赖

在web开发中引入一个依赖就可以,是因为maven的依赖传递

2.自动配置

bean和配置类如何加入到IOC容器内的?

配置类就是家里@Configration的类

①自动配置原理

SpringBoot只能扫描启动包及其子包

这样来表示要扫描的包有哪些,com.example是引入的包,com.itheima是本项目包所在
这样很繁琐,大面积的扫描

但是这种方法还是需要知道要导入第三方依赖中的哪些类,所以应该在第三方依赖中有块地方告诉导入者你要导入哪些?

第三方依赖中有个Enable开头的注解,里面包含了Import注解,表示了要导入哪些类,在Spring中只需要加上这个Enable开头的注解就可以了。

②源码跟踪

可以从这个注解入手,先从宏观上看结构

AutoConfiguration中Import了一个ImportSelector的实现类,其中的一个selectImports方法中封装了哪些类需要导入到SpringBoot的IOC容器中。

这两个文件中包含了要加载配置类的全类名,在这个配置类中表明了哪些类对象要被加载进IOC容器中,SpringBoot启动后就可以在程序中直接自动注入这个Bean对象。

而这些Bean不会全部都注册到IOC容器中,因为ConditionalOnMissingBean注解的存在。按条件装配,当条件满足才会装配。

③@Conditional

关注这三个子注解

OnClass

代表环境中是否存在Jwts这个类才会注册

OnMissingBean

代表环境中不存在这个类型的bean,意思就是有没有HeaderParser这个Bean,一般应用在用户想要自定义bean的时候,不想就是默认的

OnProperty

代表配置文件中是否存在指定属性与值,存在才会配置

3.自动配置案例-starter

有一些第三方技术没有提供与SpringBoot整合的起步依赖,但是又是很通用的,例如之前的阿里云的OSS

黄色部分定义了该程序所需要的全部依赖,并且引入了上面红色部分的包

目的是在项目中导入starter就可以在项目中直接使用AliyunOSSUtils这个工具类的bean,所以需要在autoconfigure中存在一个配置类,使用第三方bean的技术,新建一个方法加了注解bean,并返回一个AliyunOSSUtils对象。

对于starter中只在poml文件中引入了autoconfigure的依赖,来进行依赖管理

对于autoconfigure,首先在pom文件中引入了oss所需的依赖

而在autoconfigure中有一个专门的配置类,来集中分类配置,表示哪些需要交给IOC容器管理,所以有@Configuration的注解代表是配置类
@EnableConfigurationProperties这个注解代表是将AliOSSProperties交给IOC容器管理,下面需要这个bean只需要指定这个参数就行了。

对于工具类aliOSSUtils是我们最终需要直接自动配置的bean,由于里面需要AliOSSProperties对象中的值,所以在autoConfigure中需要通过那个注解将AliOSSProperties交给IOC管理,就可以注入spring中yml中的相应的值

最后需要在这个路径下定义这个文件,表示要导入哪些配置类或者类,spring启动后就会加载这个文件,将要导入的配置类交给IOC容器。

四、总结

Mybatis是操作数据库的,Spring Boot来简化Spring开发的

SpringMVC是Spring framework web开发的一部分,是来简化原始servlet程序的
基于传统SSM开发是比较繁琐的,效率比较低

五、Maven高级

1.分模块设计与开发

2.继承

①继承关系

就是子工程中很多都会用到的依赖可以放到父工程中。
实现就是在子工程pom中定义parent标签

打包方式:

由于springboot项目默认父工程为spring-boot-stater-parent,而继承只能单继承所以需要我们继承parent,parent再继承这个spring的工程

parent pom文件中:

子工程中:

②版本锁定

就是对依赖在父工程中进行统一管理

对版本号还可以统一查看修改:

3.聚合

六、私服

1.介绍

2.资源上传与下载

你上传的pom中的<version>指定了版本,会上传到不同仓库

1,3得在maven文件中的settings.xml修改

上传是maven生命周期中的deploy。
下载直接在另外工程中pom中引入需要的依赖

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值