Java框架之springboot基础

news/2025/1/11 16:58:23/

写在前面

本文看下springboot相关的基础内容。

1:从spring到springboot

在工作中,如果是我们想要引入某个框架,比如引入springMVC,就需要在web.xml中配置DispatcherServlet,在springmvc的配置文件中配置视图解析器等,同理,对于其他框架也都要进行响应的配置,但其实,整个配置的过程其实就是在spring IOC容器中创建框架需要的spring bean,像下图:

在这里插入图片描述

其实,我们要使用的各种功能对应的配置,在不通的项目中配置几乎都是相同的过程,而不同的是什么呢?基本上就是ip地址,端口号,用户名,密码这些,所以真正需要开发人员做的其实就是提供这些不确定的内容就行了,确定的配置过程,让程序来做就好,而springboot就是来做这个事情的,引入了springboot上面的过程可能变为下图:

在这里插入图片描述

所以,springboot的目标就是让开发变得简单,让配置变得简单,让运行变得简单。

2:springboot的使用

我们有两种方式来创建一个最简单的springboot项目,第一种是使用spring官方提供的脚手架 ,也可以使用idea内置的创建springboot项目的功能(内部也是调用https://start.spring.io),我们以idea为例看下,首先,new-project选择Spring Initializer,如下图:

在这里插入图片描述
之后next,录入gav,jdk版本等信息:

在这里插入图片描述
再next,这一步选择我们想要使用的功能,需要什么就选择什么就行了,比如这里选择了spring-messaging中的spring for rabbitmq,就代表我们需要使用rabbitmq,如下图:

在这里插入图片描述
接着,next,finishi,就OK了,如下图:

在这里插入图片描述

之后我们就可以通过Main函数来启动我们的springboot应用了。

3:springboot的原理

在springboot应用的main函数中都会写一个注解@SpringBootApplication,这是一个组合注解,组合了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan等注解,其中的@EnableAutoConfiguration最为重要,当解析到该注解后,就会解析classpath下所有的META-INF/spring.factories文件中的自动配置类,其中自动配置类的key是EnableAutoConfiguration类的全限定名称,如下,springboot官方提供的100多个自动配置类:

在这里插入图片描述

之后,就会自动加载这些通过javaconfig方式配置的信息,但并不是无脑加载,只有在满足条件注解的才会加载,对应的注解是@ConditionOnXxxx,如@ConditionOnBean就是当spring IOC容器中存在的某个bean时才加载,完整的如下:

在这里插入图片描述

接着就可以加载@Bean注解的方法来生成生成spring bean了,但是此时还有一个问题,不同的环境使用的配置是不同的,如数据库的地址,端口,用户名密码等信息不同,springboot是这样做的,约定了会读取spring.profile.active的值,以此来确定读取哪套配置文件,而默认加载的配置文件是application.yml/application.properties,还会加上带有环境信息的配置文件application_{spring.profile.active}.yml/application_{spring.profile.active}.properties,到这里,为了方便获取配置的信息,springboot定义了@ConfigurationProperties,用子一个类上,其中指定了preffix属性用来设置读取哪些值设置的类的属性上,如下:

@ConfigurationProperties(prefix = "spring.rabbitmq"
)
public class RabbitProperties {private static final int DEFAULT_PORT = 5672;private static final int DEFAULT_PORT_SECURE = 5671;private String host = "localhost";private Integer port;private String username = "guest";private String password = "guest";
}

就会读取以spring.rabbitmq为前缀并拼接上属性名称,从配置文件中获取值,如配置文件中配置了spring.rabbitmq.host=192.168.9.87,则最终创建的RabbitProperties的实例,host值就是192.168.9.87,接着我们只需要将配置类对应的spring bean注入到自动配置类中,自动配置类就能动态的使用用户提供的配置文件来创建功能需要的spring bean了,如下实例:

@Configuration(proxyBeanMethods = false) // java config
@ConditionalOnClass({ RabbitTemplate.class, Channel.class }) // 条件注解
@EnableConfigurationProperties(RabbitProperties.class) // 启动自动配置类,这样会自动将该bean作为参数传递到方法中(这是我猜测的,不一定对!)
@Import(RabbitAnnotationDrivenConfiguration.class) // 引入其它javaconfig类
public class RabbitAutoConfiguration {@Configuration(proxyBeanMethods = false)@ConditionalOnMissingBean(ConnectionFactory.class)protected static class RabbitConnectionFactoryCreator {@Beanpublic CachingConnectionFactory rabbitConnectionFactory(RabbitProperties properties /* 封装了配置文件内容的对象 */,ResourceLoader resourceLoader, ...) throws Exception {}

这样子,springboot的自动配置就完成了!

写在后面

参考文章列表


http://www.ppmy.cn/news/703095.html

相关文章

解决Ubuntu16.04耳机没声音问题

Ubuntu16.04插上耳机没声音解决 在使用ubuntu16.04时,安装了网易云音乐,想学习之余,听听音乐放松心情。然后美滋滋的插上耳机,打开音乐播放,这时候突然发现电脑没有声音,但是系统设置里面的声音是打开了的…

win10专业版插耳机没声音的解决方案。

方案一:更新声卡驱动,右键“此电脑”,打开“设备管理器”,打开“声音、视频和游戏控制器”,右键声卡设备,更新声卡驱动。 方案二:右键右下角的“小喇叭”按钮,打开“声音问题疑难解答…

ubuntu git clone 失败

命令行报错如下: gitxxx.xx.com: Permission denied (publickey). fatal: 无法读取远程仓库。修改步骤: 1、.ssh权限配置问题 .ssh 文件夹权限 755 或 700 config 文件权限 644 id_rsa 文件权限 600 id_rsa.pub 文件权限 644 r:read 代表读…

【Vue】组件高级

文章目录 组件高级一、watch 监听器二、组件的生命周期2.1 组件运行的过程2.2 监听组件的不同时刻2.3 监听组件的更新2.4 主要生命周期函数 三、组件之间的数据共享3.1 组件关系及数据共享3.2 父子组件数据共享3.3 兄弟组件数据共享3.4 后代组件数据共享3.5 vuex 四、全局配置 …

eclipse中如何把字体变大

这篇文章教你们如何把eclipse中的字体变大,现在请大家欣赏我的表演,当当当当。 好了,不开玩笑了,正经的开始了… 1.首先,我们肯定要把eclipse打开,哈哈哈哈 2.第二步,点击工具栏中的Window—…

Linux放大缩小字体的快捷键

linux终端窗口字体缩放快捷键 环境:linux, 打开终端, ‘ctrl’ ‘-’字体缩小,一行显示更多的内容 ‘ctrl’ ‘shift’ ‘’字体变大 ctlshift() 放大字体 ctl(-) 缩小字体 转载…

Pycharm通用快捷键设置以及Ctrl + (鼠标滚轮)Wheel UP/Down放大/缩小字体大小的设置

Pycharm通用快捷键设置以及Ctrl 鼠标滚轮Wheel UP/Down放大/缩小字体大小的设置 方法一 (通用方法)方法二 (专用方法) 在使用pycharm的时候,我有好几次都要在新的pycharm IDE中设置字体的大小。默认的字体大小感觉是有…

pycharm字体大小设置快捷键设置方式

File->Settings 在搜索框搜索increase 点击Increase Font Size(增大字体)右键选择Add Mouse Shortcut 然后按Ctrl并且鼠标滚轮往上滚。 同理可以设置减小字体【设置减小字体时,在搜索框内输入decrease】 拓展:pycharm中左侧项…