专栏首页java技术大本营java学习|创建springboot工程

java学习|创建springboot工程

大家好,我是小小刀,又和大家见面啦,今天开始我们java学习的新篇章,欢迎一起学习!

熟悉的开场白

在上篇整理篇中我们有聊到,以后的学习篇,我们会分阶段来写,让基础的同学能跟着练练基础,同时又能看到这个知识点的扩展,今天我们就从搭建web工程开始一步一步的往后,这个web工程是用来展示知识点的,把我们群里分享的知识点存起来,形成一个串联的关系,这样以后我们做成一个可视化的界面,整理自己的知识盲区非常有用,能更好的形成一个知识体系,下面我们一起开始吧!

小试牛刀

打开网址:https://start.spring.io/

  1. 可以选择用maven 还是 gradle 构建

无论哪种构建方式,对jar包的管理还是那三个坐标,groupId , artifactId,versionId ,插件也是基于这三个坐标。只不过两者管理的语法不同,再细节的我也没有研究了,gradle国内资料比较少,但有名的spring源码也用gradle构建了,所以喜欢折腾的朋友可以试试gradle。

  1. springBoot版本

有SNAPSHOT的是快照版,功能可能不是很完善,一般选非SNAPSHOT的版本

  1. 项目坐标

如每个jar包都有三个坐标值一样,我们的项目日后也会打成jar包或者是war包,也需要同样的坐标的,group一般用做项目名(com.fenxiangtech.boot),artiface一般用做模块名(study),点开#5 还可以看到version选项,一般开发就用SNAPSHOT

  1. 项目依赖

以前用spring开发的同学都知道,为了一个功能要到处找依赖,然后复制dependency到pom.xml里面,springboot把一个功能依赖的jar包做了打包,只用一个依赖就可以解决问题,可以选常用的功能模块,如mybatis , redis , jdbc , web 等等

  1. 切换到完整模式

在完整模式下可以看到切换java版本等选项,推荐java 11 , 就跟着最新的学吧,这是一个长期支持的版本。以后肯定会切换到这个版本的。

  1. 一键生成

都选完之后,就可以一键生成一个简单的可运行程序。大家可以随便选了试一试

我们的初级扩展就是,一键生成一个可运行的程序,并运行起来!

中试牛刀

小伙伴们如果还记得java故事之梦这篇文章的话,我们在里面有提及到建设者模式,现在我们一起起看看这个springboot的生成过程,是不是也很像建造者模式,先是各种配置,最后一个build生成搞定,所以我们的中级扩展就是用建造者模式模拟下springboot的一键生成

仔细想一想,各种配置有那么多的选项,这组合在一起可能性也太多了,那我们的导演类里面要写这么多种方法吗,所以应该不是纯建造者模式,如果换做是我们来做这个事情,我们会怎么做呢?找一个模板,把对应位置空出来,初始化几个Map , 把选的配置和要放到文件里面的代码对应起来,这样根据页面的选择来更改模板,定义一个原形出来,然后根据选择的配置修改,这样就不会有这么多的方法了,这是原形模式?

后来再一想,这其实就是一个生成文件而已,不用任何设计模式,直接写代码的话也就一个判断,然根据配置取值,生成文件,打包成zip,然后response返回,所以一个功能可以有很多种实现,有兴趣的小伙伴可以自己试一试

大试牛刀

上面我们有说到过,springboot 帮忙把spring的依赖和配置简单化了,以前我们在spring中都是用的各种<bean>去注入,现在在springboot中只需要在 application.perporty中配置下就可以了,我们可以往深入想一下,springboot 是怎么做到的呢?

首先,依赖肯定是用maven/gradle帮忙管理的,所以starter项目应该也是一个maven/gradle的Springboot程序,在pom.xml把依赖都定义好,定义哪些?定义可以自动配置的,详情可以百度或自己实践,在小刀的公众号里面,从来没有可以直接复制能用的,抛砖引玉,还是希望大家能一起思考,这样才能有进步

然后就是配置类,定义前缀,给默认值等等,用 @ConfigurationProperties

有配置,有依赖,下面就要加载配置,初始化实例,准备工作了,很多我们在引用starter之后,没有配置bean,就可以直接用里面的功能了,就是这一步,starter里面帮我们装配好了bean 并实例化,所以我们才可以直接用

最后就是用 spring.factories告诉spring , 哪些类要自动装配。思路如上,扩展就是自己实现一个Springboot 的 starter

最后还是要说两句

在小刀的文章里面,我希望呈现给大家的是一种思路,引发大家思考动手的思路,很多人在群里问要怎么学,路只有一条,那就是多动手!在这里和大家分享一个小伙伴的故事

从第一张可以看出来,一个才入门的小白,半个月的时间,成长的速度令人惊讶! 学习也是如此,唯有静下心来,跟着上面的思路,我们一步一步的去探索,去沉淀,这样才能学有所得,真正拿下这个知识点!

本文分享自微信公众号 - java技术大本营(java-ideashare),作者:微笑的小小刀

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java学习应用篇|windows安装JDK及配置环境变量

    其实本系统最有价值的东东,已经在前两篇中写完了,后面这些只不过是前面运用.新知识无穷无尽,每过几天就有了一些新的概念/框架出来,本系列的学习,我...

    微笑的小小刀
  • java练习本(2019-06-21)

    微笑的小小刀
  • java练习本(2019-06-25)

    “The dream crossed twilight between birth and dying.”

    微笑的小小刀
  • Gradle For Android(7)--创建Task以及Plugin

    到目前为止,我们已经看到了很多Gradle构建的属性,并且知道了怎么去执行Tasks。这一章,会更多的了解这些属性,并且创建我们自己的Task。一旦知道如何自定...

    None_Ling
  • 如何建设一个健壮性系统

    通常我们说负载, 指的大部分都是机器的负载. 但是对于系统的负载, 可能不仅仅包含机器的负载.

    用户2825413
  • 带你构建你的的第一个Python和Django应用程序

    群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 ? 您以前可能听说过Python,特别是如果您...

    企鹅号小编
  • DSSD : Deconvolutional Single Shot Detector

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    于小勇
  • AR(I)MA时间序列建模过程——步骤和python代码

    1.异常值和缺失值的处理 这绝对是数据分析时让所有人都头疼的问题。异常和缺失值会破坏数据的分布,并且干扰分析的结果,怎么处理它们是一门大学问,而我根本还没入门...

    机器学习AI算法工程
  • package http

    要管理代理、TLS配置、keep-alive、压缩和其他设置,创建一个Transport:

    李海彬
  • AJAX常见面试题

    什么是AJAX,为什么要使用Ajax AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发...

    Java3y

扫码关注云+社区

领取腾讯云代金券