SpringBoot的学习要点

目录

SpringBoot 

创建项目

配置文件 

注解 

命名规范

SpringBoot整合第三方技术

……


  • 中文文档:Spring Boot 中文文档 

SpringBoot 

  • Spring Boot 是基于 Spring 框架的一种快速构建微服务应用的方式
  • 它主要提供了自动配置、简化配置、运行时应用监控等功能
  • 它约定了一套项目开发规则来自动完成整个项目的配置,从而让开发人员能够简单地创建完项目就可以直接进入开发阶段
  • 优点:
    • 起步依赖(简化依赖配置)
      • parent, starter
      • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,如果发生坐标错误,再指定Version
    • 自动配置(简化常用工程相关配置)
    • 辅助功能(内置服务器……)
      • tomcat(默认):apache出口,应用面广,负载了若干较重的组件
      • jetty:更轻量级,负载性能远不及tomcat
      • undertow:负载性能勉强胜于tomcat

创建项目

  • 推荐使用Maven或Gradle来构建项目
  • 快速创建一个SpringBoot项目
    • 进入网站:Spring Initializr
    • 填写项目的各种配置信息,再添加Spring Web依赖,点击生成压缩包
    • 解压压缩包,用IDEA打开解压后得到的文件夹
    • 再修改设置里的Maven的仓库信息和使用的jdk版本,pom.xml文件等即可

配置文件 

  • 默认配置文件为application.yml或application.properties,通常只用于存储SpringBoot项目的核心配置信息
  • 存放在项目的src/main/resources目录下,该目录在SpringBoot中的抽象路径为classpath
  • 一个项目里可以有多个配置文件,可以把不同类型的配置信息存储在不同的配置文件里
  • SpringBoot提供的配置文件格式:(优先顺序:properties>yml)
    • application.properties(等号)
      •  key=value
    • application.yml(冒号后有一个空格):
      • key: value
      • yml数据读取:使用@Value读取单个数据,属性名引用方式:${一级属性名,二级属性名……}
      • yml文件内部引用属性:使用${xxx(属性名)},一变全变
        • 属性值中的转义字符需要用双引号包起
          • lesson: "Spring\tboot\nlesson"
      • 配置信息的简便用法:(把配置文件里需要的那部分信息封装成一个对象使用)
        • (1)使用@ConfigurationProperties注解绑定配置信息到封装类中
        • (2)封装类需要定义为Spring管理的bean,否则无法进行属性注入

注解 

  • SpringBoot常用注解:
  • @SpringBootApplication
    • 每一个SpringBoot项目中都有一个启动类(主类),启动类必须被@SpringBootApplication注解标注,用于启动一个SpringBoot项目的SpringBootApplication.run()方法
    • 一个项目应该只使用一次@SpringBootApplication注解
    • 其只能扫描它所在的包及其子包中的代码,如果无法被扫描到,相当于无效代码
    • SpringBoot工程运行后初始化Spring容器,扫描引导类所在的包加载bean
  • Bean
    • Bean指的是由SpringBoot容器管理的对象
    • 依赖关系:一个对象中需要用到另外一个对象
    • 依赖注入:SpringBoot在创建一个对象时,会根据“依赖关系”,把这个对象依赖的对象注入其中
    • Bean的注册:SpringBoot自动寻找开发人员已经创建好的Bean,并将其保存在SpringBoot容器中
    • Bean的注入:把SpringBoot容器中的Bean赋值给某个尚未被赋值的成员变量
    • Bean的获取:
      • 在类中创建一个属性,通过为属性添加注解,让SpringBoot为这个属性注入Bean
      • @Autowired
      • @Resource
      • @Value
    • 当SpringBoot项目被启动时,SpringBoot先会自动扫描所有的组件,然后注册所有的Bean,把这些Bean注入各自的使用场景中
  • 组件
    • 要想让@Bean生效,那么被标注的方法所在的类必须有下列其中一个的注解,以便被SpringBoot的组件扫描器扫描到
    • @Configuration
    • @Controller
    • @Service
    • @Repository
    • @Component
    • @Import:将@Bean所在类主动注册给SpringBoot

命名规范

  • 包的命名

    • 风格一:以业务场景进行分类

      • 比如与登录有关的都放到login包下

    • 风格二:以功能模块进行分类

      • 比如负责页面跳转的Controller都放到controller包下

    • 常见分类:

      • 配置包:config / configuration,存放被@Configuration标注的类

      • 公共类包:common,存放供其他模块使用的组件、工具、枚举等代码

        • component:存放被@Component标注的类

        • utils / tools:存放工具类

        • constant:存放常量类

      • 控制器包:control / controller

      • 服务包:service,存放所有实现业务的服务类

        • impl:存放所有实现业务的服务接口

      • 数据库访问接口包

        • dao,存放用于操作数据库的代码

        • mapper,项目使用MyBatis作为持久层框架

      • 数据实体包

        • pojo,项目使用SSH(Spring+Struts+Hibernate)整合框架

        • model,项目使用SSM(Spring+SpringMVC+MyBatis)整合框架

        • entity,项目使用MyBatis框架

      • 过滤器包:filter

      • 监听器包:listener

  • Java文件命名 

    • 使用“驼峰命名法”:除了第一个单词,后面每个单词的首字母都大写,其他字母小写,单词之间没有下划线
    • 以“业务+模块”的方式命名,比如LoginController
    • 常见命名方式:
      • 控制器类:以Control或Controller结尾
      • 服务接口 / 类:以Service结尾
      • 接口的实现类:以Impl结尾
      • 工具类:以Util结尾
      • 配置类:以Config或Configuration结尾
      • 组件类:以Component结尾
      • 枚举:以Enum结尾
      • 实体类:
        • 名字必须是名词
        • 常见后缀名:
          • PO:持久层对象,persistent object
          • DO:数据对象, data object
          • DTO:数据传输对象, data transfer object
          • BO:业务对象, business object
          • VO:显示层对象, view object
          • POJO:简易的Java对象,plain,ordinary java object

SpringBoot整合第三方技术

  • SpringBoot—— MyBatis
  • SpringBoot—— Redis
  • SpringBoot—— RabbitMQ
  • SpringBoot—— Thymeleaf
  • ……
  • 学完SpringBoot基础框架知识后,SpringBoot整合其他技术是重难点,用到什么学什么,大体思路不要乱即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大水文之------端午练练JS好了

最近有点不太知道要干啥了,昨天看了集cocos的介绍,下载了个DashBoard,看了看里面的内容,确实有点小震惊,还有些免费的源码可以学习,挺好的。 昨天学习ts,感觉自己的js水平好像不太行&#xff0c…

Functional ALV系列 (10) - 将填充FieldCatalog封装成函数

在前面的博文中,已经讲了封装的思路和实现,主要是利用 cl_salv_data_descr>read_structdescr () 方法来实现。在这里,贴出代码方便大家参考。 编写获取内表组件的通用方法 form frm_get_fields using pt_data type any tablechanging…

排序---基数排序

前言 个人小记 一、简介 基数排序是一种非比较排序,所以排序速度较快,当为32位int整数排序时,可以将数分为个位十位分别为2^16,使得拷贝只需要两轮,从而达到2*n,然后给一个偏移量,使得可以对负数排序。以…

C++期末复习提纲(血小板)

目录 1.this指针 2.静态成员变量 3.面向对象程序设计第一阶段 4.面向对象程序设计第二阶段 5.面向对象程序设计第三阶段 6.简答题 (1)拷贝构造函数执行的三种情况: (2)虚析构函数的作用: &#xff…

55.ReentrantReadWriteLock应用于缓存

简单的缓存案例 模拟一个数据层dao @Slf4j public class GenericDao {public <T> T queryOne(Class<T> beanClass, String sql, Object... args) {try {log.debug("进入数据库查询.....");Constructor<T> constructor = beanClass.getDeclaredCo…

如何看待华为去google化自己做鸿蒙系统,对开发人员有什么影响

华为去Google化并自主研发鸿蒙系统是一个重要的战略决策&#xff0c;这一决策对开发人员产生了深远的影响。以下是对这一决策及其对开发人员影响的详细分析&#xff1a; 一、华为去Google化自主研发鸿蒙系统的背景 在美国的技术封锁和限制下&#xff0c;华为面临着使用Androi…

Python基础——字符串

一、Python的字符串简介 Python中的字符串是一种计算机程序中常用的数据类型【可将字符串看作是一个由字母、数字、符号组成的序列容器】&#xff0c;字符串可以用来表示文本数据。 通常使用一对英文的单引号&#xff08;&#xff09;或者双引号&#xff08;"&#xff09;…

html接口响应断言

接口响应值除类json格式&#xff0c;还有html格式 断言步骤 第一步&#xff1a;替换空格replace 原本返回的格式和网页内容一致&#xff0c;每行前面有很多空格&#xff0c;需要去除这些空格 第二步&#xff1a;分割split 因为行与行之前有回车符&#xff0c;所以把回车符替…

Spring之SpringMVC源码

SpringMVC源码 一、SpringMVC的基本结构 1.MVC简介 以前的纯Servlet的处理方式&#xff1a; Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String type req.getParameter(Constant.REQUEST_PA…

【Java面试】十六、并发篇:线程基础

文章目录 1、进程和线程的区别2、并行和并发的区别3、创建线程的四种方式3.1 Runnable和Callable创建线程的区别3.2 线程的run和start 4、线程的所有状态与生命周期5、新建T1、T2、T3&#xff0c;如何保证线程的执行顺序6、notify和notifyAll方法有什么区别7、wait方法和sleep方…

QT-轻量级的笔记软件MyNote

MyNote v2.0 一个轻量级的笔记软件&#x1f4d4; Github项目地址: https://github.com/chandlerye/MyNote/tree/main 应用简介 MyNote v2.0 是一款个人笔记管理软件&#xff0c;没有复杂的功能&#xff0c;旨在提供便捷的笔记记录、管理以及云同步功能。基于Qt 6.6.3 个人开…

MATLAB入门知识

目录 原教程链接&#xff1a;数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 前言 历史记录 脚本文件&#xff08;.m&#xff09; Matlab帮助系统 注释 ans pi inf无穷大 -inf负无穷大 i j虚数单位 eps浮点相对精度 0/&a…

Edge浏览器视频画中画可拉动进度条插件Separate Window

平时看一些视频的时候&#xff0c;一般需要编辑一些其他的东西&#xff0c;于是开启画中画&#xff0c;但是画中画没有进度条&#xff0c;需要大幅度的倒退前进得回到原视频&#xff0c;很麻烦。这里推荐插件Separate Window&#xff0c;可实现画中画进度条拉动和播放sudu的调节…

Transparent 且 Post-quantum zkSNARKs

1. 引言 前序博客有&#xff1a; SNARK原理示例SNARK性能及安全——Prover篇SNARK性能及安全——Verifier篇 上图摘自STARKs and STARK VM: Proofs of Computational Integrity。 上图选自&#xff1a;Dan Boneh 斯坦福大学 CS251 Fall 2023 Building a SNARK 课件。 SNARK…

工业通讯现场中关于EtherCAT转TCPIP网关的现场应用

在当今工业自动化的浪潮中&#xff0c;EtherCAT技术以其高效、实时的特性成为了众多制造业的首选。然而&#xff0c;随着工业互联网的发展&#xff0c;对于数据的远程访问和云平台集成的需求日益增长&#xff0c;这就需要将EtherCAT协议转化为更为通用的TCP/IP协议。于是开疆智…

Verilog实现的数字钟

在Verilog中实现一个数字钟通常会涉及到几个部分&#xff1a;时钟源&#xff08;通常是一个外部晶振或PLL&#xff09;、计数器、以及显示逻辑&#xff08;可能是七段数码管或LCD显示&#xff09;。这里&#xff0c;我将给出一个简化的Verilog代码示例&#xff0c;用于演示一个…

kafka-消费者-消费异常处理(SpringBoot整合Kafka)

文章目录 1、消费异常处理1.1、application.yml配置1.2、注册异常处理器1.3、消费者使用异常处理器1.4、创建生产者发送消息1.5、创建SpringBoot启动类1.6、屏蔽 kafka debug 日志 logback.xml1.7、引入spring-kafka依赖1.8、消费者控制台&#xff1a;1.8.1、第一次启动SpringK…

日进2000,我怎么做到的

昨天遇到一个有意思的项目&#xff0c;让我一天进账2000&#xff0c;一个字&#xff1a;爽。 这几天接洽了一位新客户&#xff0c;主要诉求就是优化系统&#xff0c;基于LNMP的系统优化。正好这个领域我比较熟悉&#xff0c;以前都是在公司做项目&#xff0c;也不怎么涉猎系统优…

Vue2计算属性(computed)和侦听器(watch)

文章目录 1.计算属性1.1 什么是计算属性1.2 计算属性怎么用&#xff1f;1.3 计算属性的作用 2.侦听器(watch)3.computed和watch选择4.什么时候用箭头函数什么时候用普通函数 1.计算属性 1.1 什么是计算属性 &#xff08;1&#xff09;Vue的原有属性&#xff1a;data对象当中的…

HCIP-Datacom-ARST自选题库_10_其他判断【23道题】

1.端到端时延等于路径上所有处理时延与队列时延之和。 2.部署PPP Multilink之后&#xff0c;数据将根据源地址和目的地址均匀的分配在各条成员链路上。 3.流镜像分为本地流镜像和远程流镜像两种方式。√ 4.IP报文中用Tos字段进行Q0S标记&#xff0c;Tos字段中是使用前6bit来…