Java Springboot的目的你知道吗

目录
  • Spring-boot目的
    • Spring如何简化开发
    • 第一个spring-boot程序
  • 总结

Spring-boot目的

Spring是为了解决企业应用开发的复杂性而创建的,简化开发

Spring如何简化开发

1.基于POJO的轻量级和最小侵入性编程

2.通过IOC,依赖注入(DI)和面向接口实现松耦合

3.基于(AOP)和惯例进行声明式编程

4.基于切面和模板减少样式代码

微服务

第一个spring-boot程序

官方提供了一个快速生成的网站!idea集成了这个网站

1可以在官网下载后,导入idea开发(官网)

2直接使用idea创建一个springboot项目(一般直接在idea创建)

自动配置原理

自动配置:pom.xml

​ spring-boot-dependencies:核心依赖在父工程中

​ 我们在写或者引入一些springboot依赖的时候,不需要指定版本就是因为有这些版本仓库

启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

启动器:说白了就是SpringBoot的场景启动器

比如spring-boot-starter,他就会帮我们自动导入web环境所有依赖

springboot会将所有的功能场景,都变成一个个的启动器

我们要使用什么功能,就只需要找到对应的启动器就可以了start

主程序

//标注这个类是一个springboot应用
@SpringBootApplication
public class SpringBoot01HelloworldApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBoot01HelloworldApplication.class, args);
    }
}
@SpringBootConfiguration	springboot的配置
		往下
	@configuation	spring配置类
		往下
	@Component:说明是一个spring组件
@EnableAutoConfiguration	:自动配置
	@@AutoConfigurationPackage:自动配置包
	@Import(@AutoConfigurationPackage.Registrar.class):自动配置包注册
	@Import({AutoConfigurationImportSelector.class}):自动导入选择(组件)
	List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
	获得所有的配置

获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
    List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
    Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
    return configurations;
}

META-INF/spring.factories自动配置的核心文件

Properties properties = PropertiesLoaderUtils.loadProperties(resource); 所有资源加载到配置类中

结论:

​ springboot所有自动配置都是在启动的时候扫描并加载spring-factories所有的自动配置类都在里面,但是不一定生效,要判断条件是否成立,要判断是否成立,只要导入对应的start,就有对应的启动器,有了启动器,我们自动装配就会生效,然后就2配置成功了

1.springboot在启动的时候,从类的路径下/META-INF/spring.factories获取指定的值;

2.将这些自动配置的类导入容器 自动配置类就会生效,帮我们进行自动配置

3.一起我们需要自动配置的东西,现在springboot帮我们做了

4.整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.3.7.RELEASE.jar

5.他会把所有需要导入的组件,以类名方式返回,这些组件就会被添加到容器;

6、容器中也会存在非常多的xxxAutoConfiguration的文件(@Bean),就是这些容器中导入了这个场景需要的所有组件并自动配置,@Configuration,javaConfig!

7.有了自动配置类,免去了我们手动编写配置文件的工作

SpringApplication.run(SpringBoot01HelloworldApplication.class, args);
 SpringApplication加载主类
 这个类主要做了以下四件事情
 1.判断应用的类型的普通的项目还是web项目
 2.查找并加载所有可用初始化器,设置到initializers属性中
 3.找出所有的应用程序监听器,设置到listeners属性中
 4.推断并设置main方法的定义类,找到运行的主类

javaConfig @Configuration @Bean

Docker:进程

tializers属性中

3.找出所有的应用程序监听器,设置到listeners属性中

4.推断并设置main方法的定义类,找到运行的主类

javaConfig @Configuration @Bean
Docker:进程

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java Springboot websocket使用案例详解

    什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 - 为什么要实现握手监控管理 如果说,连接随意创建,不管的话,会存在错误,broken pipe 表面看单纯报错,并没什么功能缺陷等,但实际,请求数增加,容易导致系统奔溃.这边画重点. 出现原因有很多种,目前我这边出现的原因,是因为客户端已关闭连接,服务端还持续推送导致. 如何使用 下面将使用springboot集成的webSocket 导入Maven 首先SpringBoot版本 <parent> &l

  • Java SpringBoot快速集成SpringBootAdmin管控台监控服务详解

    目录 1.初识SpringBootAdmin 2.搭建服务端--POM文件中添加相关依赖 3.修改服务端application启动类 4.配置security安全信息 5.启动server服务端 6.搭建client客户端 总结 SpringBootAdmin是一个针对 Spring Boot 的 Actuator 接口进行 UI 美化封装的监控工具,它可以在列表中浏览所有被监控 spring-boot 项目的基本信息.详细的 Health 信息.内存信息.JVM 信息.垃圾回收信息.各种配置信

  • 四种引用类型在JAVA Springboot中的使用详解

    目录 概念介绍 01.  强引用 02.  软引用 03.  弱引用 04.  虚引用 对象可达性 Springboot源码中的使用 总结 概念介绍 不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响. 01.  强引用 这个就是我们创建的普通对象了~ 当该对象被显示地赋值为 null 时,或者没有被其他存活的对象继续引用时,它就会成为垃圾收集器的目标,等待被收回 02.  软引用 软引用( SoftReference ) , 当内存不足 时会被回收 比如

  • Java SpringBoot开发小技巧详解

    目录 一.SpringBoot开发小技巧 1.1 Lombok 1.2 dev-tools 1.3 Spring Initializr 总结 一.SpringBoot开发小技巧 1.1 Lombok 作用:在程序编译的时候,自动帮我们生成setter和getter方法以及我们的toString方法和我们的全参和无参构造器等等. 那么,怎么用呢?很简单,用下边这四个注解就行了: 1.@Data:自动生成setter和getter方法. 2.@ToString:自动生成toString方法. 3.@

  • Java SpringBoot+vue+实战项目详解

    目录 1.<锋迷商城>业务流程设计-接⼝规范 1.1 前后端分离与单体架构流程实现的区别 1.1.1单体架构 1.1.2 前后端分离架构 1.2 接口介绍 1.2.1接口概念 1.2.2接口规范 1.3 Swagger 1.3.1作用 1.3.2 Swagger整合 1.3.3 Swagger注解说明 1.3.4 Swagger-ui 插件 1.4 RESTful 总结 1.<锋迷商城>业务流程设计-接⼝规范 在企业项⽬开发中,当完成项⽬的需求分析.功能分析.数据库分析与设计之后,

  • Java Springboot的目的你知道吗

    目录 Spring-boot目的 Spring如何简化开发 第一个spring-boot程序 总结 Spring-boot目的 Spring是为了解决企业应用开发的复杂性而创建的,简化开发 Spring如何简化开发 1.基于POJO的轻量级和最小侵入性编程 2.通过IOC,依赖注入(DI)和面向接口实现松耦合 3.基于(AOP)和惯例进行声明式编程 4.基于切面和模板减少样式代码 微服务 第一个spring-boot程序 官方提供了一个快速生成的网站!idea集成了这个网站 1可以在官网下载后,

  • SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)

    关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细) 我在这就开门见山直接介绍我们项目日志的配置使用吧!~ 1.基本介绍 默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台.如下图: 实际开发中我们不需要直接添加logback日志依赖. 你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 lo

  • 基于java+springboot+mybatis+laiyu实现学科竞赛管理系统

    目录 项目背景: 主要功能模块: 主要技术: 主要功能: 功能截图: 数据图主要表设计: 用户表: 菜单表: 项目申请表: 竞赛报名表: 项目总结: 项目背景: 伴随着当今世界信息科技与联网的飞速发展,计算机也在迅速的普及,人们的生活方式已经迈入了以网络为主的时代,每行每业的信息化程度也越来越高,社会和经济发展的主要动力就是网络,随着我们国家对教育的重视程度不断提高,各个学校的学生数量不断增加,学生的校园生活也越来越精彩,学术竞赛.团队比赛也越来越丰富,在竞赛的申请及报名参加过程中,以往的纸质提

  • java Springboot实现教务管理系统

    目录 1.研究背景 2.现状与反思 3.功能截图 4.代码 4.1用户登录 4.2yml配置 4.3视图跳转 4.4拦截放行 5.总结 1.研究背景              在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用.基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施.很多校园都已经不满意商务办公管理的缓慢成长方式.学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度.社会持续

  • Java SpringBoot自定义starter详解

    目录 一.什么是SpringBoot starter机制 二.为什么要自定义starter ? 三.什么时候需要创建自定义starter? 四.自定义starter的开发流程(案例:为短信发送功能创建一个starter) 1.细节:命名规范 2.必须引入的依赖 3.编写相关属性类(XxxProperties):例如 SmsProperties.java 4.编写Starter项目的业务功能 5.编写自动配置类AutoConfig 6.编写spring.factories文件加载自动配置类 7.打

  • java springboot的概述、特点与构建介绍

    目录 回顾Spring spring的优点: Spring Boot概述 SpringBoot特点 SpringBoot的核心功能 SpringBoot开发环境构建 回顾Spring springBoot是集成了spring的优点,优化了spring配置的一款框架,他的学习离不开spring,我们先回顾spring spring的优点: 优点: 1.开源,轻量级,非侵入式的一站式框架,简化企业级应用开发.   2.控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间的解

  • java~springboot~ibatis数组in查询的实现方法

    在ibatis的xml文件里,我们去写sql语句,对应mapper类的方法,这些sql语句与控制台上没什么两样,但在有些功能上需要注意,如where in这种从数组里查询符合条件的集合里,需要在xml里进行特别的处理. <update id="batchUpdate" parameterType="map"> update customer_info set status=#{status},appoint_time=#{appointTime} whe

  • java springboot poi 从controller 接收不同类型excel 文件处理

    根据poi接收controller层的excel文件导入 可使用后缀名xls或xlsx格式的excel. 1.pom引入 <!-- poi 操作Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <d

  • 浅谈Java(SpringBoot)基于zookeeper的分布式锁实现

    通过zookeeper实现分布式锁 1.创建zookeeper的client 首先通过CuratorFrameworkFactory创建一个连接zookeeper的连接CuratorFramework client public class CuratorFactoryBean implements FactoryBean<CuratorFramework>, InitializingBean, DisposableBean { private static final Logger LOGG

  • Java(springboot) 读取txt文本内容代码实例

    这篇文章主要介绍了Java(springboot) 读取txt文本内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public class TxtTest { private static final Logger logger = LoggerFactory.getLogger(TxtTest.class); public static String readTxt(File file) throws IOExcepti

随机推荐