我理解的springboot

比如,咱们一般写的web程序,就是war包,实际上是放到tomcat中运行,那么tomcat有一个唯一的入口去加载这些东西的

然后运行的时候开启监听,来调用其他的访问

实际上也是唯一入口的

springboot内部是集成了tomcat的,可以不安装tomcat的

一般开发和测试的时候,都是使用内部集成的,用起来比较方便,启动也快,也不用操心部署什么的

这个唯一的入口,就是application

和一般的main方法是一码事

只是,这个类的名字是随意的,并不是必须是什么固定的名字

官方用的是application,我用的是apprun

因为application有不少人不认识,而apprun认识就相对容易的多

主要来说,springboot的启动入口,就是加载一个springboot内置的一个类,这个类就是springboot的默认配置方式了

和以前的ssh或ssm项目不同,使用约定大于配置的方式来执行的

因此,他遵循一般的约定

比如,分层架构,比如MVC结构,比如默认配置resource内,比如静态内容对外暴露只有一个入口等等的

所以,这个约定上来说,springboot启动的时候,你发现里面加载了一些内容

这个内容就是你做这个application类的类名

也就是说,通过这个类名,找到该类的位置,从这个位置,从此至下的一层一层搜索java文件或者是静态的配置文件

因此,application这个java文件,是放在根目录之内的

根目录,意思是最上层目录

例如:com.example.src

前两个包都是空的

所以src就是根目录了

example一般是项目名

约定的分类,如下主要分为三种

第一种是main,即主程序和必须程序所在的包

第二是resources,静态资源和配置文件所在的位置

第三是test,测试接口和测试文件所在的包

那么,他搜索其他的配置,依据包括几个

第一,是properties文件,就key-value的配置文件

第二,是yarn文件,暂时不管,和配置文件是一码事,只是格式不同

第三,是xml文件,老配置方式了,xml配置比较清晰,但是写起来比较麻烦,读取内容也挺多,需要调用的包也挺多

第四,是java文件

而要识别该java文件是否是配置文件,取决于标记该java文件是否要写成一个bean,注入到spring的bean内存管理中

要让spring识别一个java类为spring的bean,并加载到内存管理中的话

学校学的,一般是xml配置

比如 spring.xxx.xml文件

内部有bean标签

也可能有config标签

这些就是bean的xml配置方式,告诉spring,这个bean是什么名字,是哪个类,何时加载,等等的

在这之后,大家使用了注解方式来进行标记,代替了大部分的xml配置

也就是说,在一个java类上写上@bean,或者其他的spring注解,告诉spring这个是个bean

那么需要配置一下 scan,就是扫描器,来配置扫描哪个包,来寻找这个包下的注解

发展到目前的springboot,不配置扫描的包了,默认扫描该application下的所有文件

成了一种约定的方式了

关于扫描

叫 component scan或者scope scan

组件扫描或者域扫描的意思

在spring中会有这个配置,在使用xml的时候,这个扫描配置,一般还是在spring的最优先的配置呢

然后,spring通过认识了@bean,或者其他的扫描的注解,知道将这个java文件,同构反射调用,写入内存,然后别人可以通过这个bean的类名,或者这个bean指定的一个key来访问这个bean,拿到这个bean内的某个变量,或者某个算法加工后的变量

在目前的springboot中,常见的直接加载的配置,主要使用的是@configuration注解

就是我给你的项目中的config包下,所有的类都有这个注解,保证是服务器启动即加载的

类似的启动即加载的注解,还有很多,只是,功能都完全相同,完全的相同,只是名字不同,他们都是直接在application启动的时候加载,仅此而已

 

关于bean,pojo,java bean都可当做没有中文

他们是程序构成的最基础的一个class

这个基础的class,功能可以写的前边万花,但是再变化,也都是有个输入参数,加工方式,输出参数构成

在OOP说法中,是由类,包裹变量,加上构造方法,方法构成的东东

和你以前写的什么猫类狗类是一个东西

但是这个不叫做java文件

也不叫做class文件

因为,java文件是文本,class是编译后的可以被jvm读取的文件

而bean,pojo,javabean这种,是某个class加载进内存后,被实例化的对象

可以理解为,java是给人看的死文件,class是给jvm给机器看的死文件

而bean这种,是活着的,等待使用或者正在使用中的内存对象

总结一下

springboot的application在启动以后,实例化了自身的默认配置,启动了一个内置的tomcat,然后使用默认的配置扫描你写的所有的配置,各种方式的配置都扫描,然后装配到bean中,或者作为某些变量赋值给tomcat的配置中,然后开启各种监听,等待被调用

 

转载于:https://www.cnblogs.com/simeng/p/10254310.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值