SpringBoot1:helloword、导入依赖、配置项设置,打包方法、lombok、dev-tools、Spring Initailizr、常见注解

news2025/1/19 11:39:01

1.简介

简化Spring开发的一个框架。对整个Spring技术栈的大整合
J2EE企业级开发的一站式解决方案。

2.微服务

一个应用应该是一组小型服务,可以通过HTTP的方式来进行互通
每一个功能元素都是可独立替换,和独立升级的软件单元。

3.HelloWord

功能:浏览器发送请求,服务器接收并处理,响应helloworld字符串;
1.创建maven项目,配置pom,导入依赖
导入依赖
每一个springboot工程一定有父项目,父项目有版本号,所以后面的依赖不用写版本号。
父项目主要是依赖管理,声明了所有开发中常见的版本号,所以后面不用写版本号,也可以叫做springboot的自动版本仲裁



  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.导入Springboot相关依赖
HelloController 类

//@ResponseBody//以文本体返回。
//@Controller//说明他能处理请求
@RestController//=ResponseBody+Controller
public class HelloController {

    //意思为接收浏览器的hello请求
   @RequestMapping("/hello")
    public String handle01(){
       return "hello Spring Boot";
   }
}

主程序类

//次注解表明这是一个SpringBoot应用
//编写主程序类,是入口
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);//固定写法,主程序运行
    }
}

3.快速修改配置文件
在这里插入图片描述
SpringBoot中所有的配置都从这里面改applecation.properties

  • 修改配置项:
    配置项属性从官方文档里找,有清单。

Springboot中生成jar包的插件
在pom文件中

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.4.RELEASE</version>
            </plugin>
        </plugins>
    </build>

打包方法↓
在这里插入图片描述

依赖管理和自动配置

每一个springboot工程一定有父项目
父项目主要是依赖管理,声明了所有开发中常见的版本号
每一个springboot工程一定有父项目,父项目有版本号,所以后面的依赖不用写版本号。
可以修改版本号

  • 场景启动器
    spring-boot-start,不同场景pom依赖引入不同的场景启动器
  • 默认扫描规则
    主程序所在的包,及其所在的所有子包,都会被扫描进来。
  • 想要改变扫描路径
@SpringBootApplication(scanBasePackages = "com.atguigu")
  • 所有都有默认配置,都可以通过自定义配置文件applecation.properties来修改
  • 引入那个场景starter,就会启动那些包
  • 自动配置,只有引入场景的自动配置才会生效,不引入的自动配置不生效

配置类


@Import({User.class, DBHelper.class})//将指定类型的组件类导入,可自动创建指定组件的对象,类似于导入外部Bean
//配置类中使用@Bean标注在方法上
//proxyBeanMethods = true配置类的默认是true
@Configuration(proxyBeanMethods = true)//说明他是一个配置类,=原来的xml配置文件
public class Myconfig  {

    //默认是单实例的组件
    @Bean//给容器中添加组件,已方法名作为组件id,即bean的id,返回类型就是组件类型,返回的值就是组件bean在容器中实例
    public User user01(){
        return new User("zhangsan",18);
    }

    @Bean("tom")//也可以自定义名字
    public Pet TomcatPet(){
        return new Pet("Tomcat");
    }
}

注解大全及其含义

SpringBoot官方文档
https://docs.spring.io/spring-boot/docs/2.7.3/reference/htmlsingle/#web

//主程序注解,默认扫描范围为主程序所在的包,及其所在的所有子包,都会被扫描进来。
@SpringBootApplication
//主程序注解,指定扫描范围
@SpringBootApplication(scanBasePackages = "com.atguigu")
//写在组件的类上,标在注解之上
@Import({User.class, DBHelper.class})//将指定类型的组件类导入,可自动创建指定组件的对象,类似于导入外部Bean

//条件装配注解@Conditional,@ConditionalOnBean代表当容器中有名为tom的组件bean时,才注册组件beanuser01
//也可以标注在类上。条件装配
@ConditionalOnBean(name = "tom")
@ImportResource("classpase:beans.xml")//把别的地方配置文件的bean导入Sprigng配置中

//配置绑定1
//ConfigurationProperties配置绑定功能,只有在容器中,才会拥有springboot提供的强大功能
//ConfigurationProperties(prefix = "mycar")配置绑定,绑定为mycar后面的
/*
绑定为配置文件中的mycar
mycar.brand=BYD
mycar.price=1000
*功能位让javaBean和配置文件的东西绑定
* */
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
    private String brand;
    private Integer price;}

//配置绑定2
//在类上注解
@ConfigurationProperties(prefix = "mycar")//这一行必须要 
public class Car {
    private String brand;
    private Integer price;}
//开启Car属性配置功能
//把Car组件的主动导入到容器中
//在config类上注解
//EnableConfigurationProperties的作用是让ConfigurationProperties注解的类生效
@EnableConfigurationProperties(Car.class)



//配置文件中debug=true,开启自动配置报告,可以查看那些配置类生效了,哪些没生效
//日志文件中Negative是不生效的。Positive是生效的
debug=true
添加@Data注解,就可以自动为已有属性生成getset方法。
添加@ToString注解,可以自动生成toString方法,代码不会显示,但是编译的时候会自动编译方法。
@NoArgsConstructor//无参构造器
@AllArgsConstructor//有参构造器
@EqualsAndHashCode//重新Equals和HashCode方法  
@Log4j//自动给类中注入日志类,日志记录器
/*
* 使用log.info(“”)会自动向log4j中
* */


开发技巧、Lombok

1. lombok

作用简化javabean开发,有无参构造器,toString、getset方法等简化
1.项目依赖中引入lombok

  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2.安装插件
在这里插入图片描述
3.程序中使用即可
添加@Data注解,就可以自动为已有属性生成getset方法。
添加@ToString注解,可以自动生成toString方法,代码不会显示,但是编译的时候会自动编译方法。
@NoArgsConstructor//无参构造器
@AllArgsConstructor//有参构造器
@EqualsAndHashCode//重新Equals和HashCode方法
@Log4j//自动给类中注入日志类,日志记录器
/*

  • 使用log.info(“”)会自动向log4j中
  • */
    可以使界面看着整洁。

2.dev-tools

热部署,热更新(本质是重启项目)
功能热更新,每次修改代码完,不用重新启动,
按住Ctrl+F9(重新编译加载)就能实时生效
1.pom中引入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

Spring Initailizr

自动引入了对应依赖,自动创建好了项目结构,自动创建好了主程序类。自动搭建了架构

  • 可以快速创建Springboot应用,在创建的时候界面上使用。
  • 勾选之后,会自动导入对应的依赖

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

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

相关文章

Stm32标准库函数5——OV2640 PA0-7 F103C8T6 4500000 联合VB 高分辨率

stm32f103c8t6串口发送 OV2640的图像&#xff0c;分辨率可选。网络上资料大部分是低分辨率的&#xff0c;这个可以做高分辨率 完整工程打包&#xff0c;包含VB串口显示界面&#xff1a; https://download.csdn.net/download/fengyuzhe13/87327054https://download.csdn.net/do…

【经典问题:HanoiTower(汉诺塔)】

&#x1f381;HanoiTower&#x1f385;HanoiTower问题描述&#x1f385;&#x1f385;模拟推导&#x1f385;&#x1f385;&#x1f385;问题的两种形式&#x1f384;求解移动总次数&#x1f384;&#x1f384;打印详细的移动过程&#x1f385;HanoiTower问题描述 汉诺塔问题&a…

基于HMM模型实现中文分词

任务描述:在理解中文文本的语义时需要进行分词处理,分词算法包括字符串匹配算法,基于统计的机器学习算法两大类。本案例在前文将说明常用分词库及其简单应用,之后会通过中文分词的例子介绍和实现一个基于统计的中文分词方法——HMM模型,该模型能很好地处理歧义和未登录词问…

[含文档+源码等]基于SSM实现的宿舍公共财产管理系统|寝室

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 [含文档源码等]基于SSM实现的宿舍公共财产管理系统|寝室 演示视频 [含文档源码等]基于SSM实现的宿舍公共财产管理系统|寝室_哔哩哔哩_bilibili 系统介…

经济低迷形势下,如何降低软件开发成本?

1、选对开发方法 过程决定结果。方法错了&#xff0c;再有经验的人&#xff0c;结果也不会好。例如&#xff0c;软件开发方法从70年代的瀑布&#xff0c;一步步从迭代、快速原型等进化到现在的敏捷、规模化敏捷、DevOps等。统计数字显示&#xff0c;使用敏捷方法&#xff0c;平…

Excel中实现时间相减,得到间隔时间(年月日时分秒)

一、年月日之差 表中有开始日期和结束日期&#xff0c;我们在D3单元格中输入“C3-B3” 于是&#xff0c;得到下面的结果 很显然&#xff0c;结果并不是我们想要的。说明这种方法不行&#xff0c;为了得到两个日期之间的时间间隔&#xff0c;需要用到DATEDIF函数。先来说下DATED…

我国融资性担保行业整体呈减量提质趋势 国家“出手”解决行业痛点

根据观研报告网发布的《中国融资性担保行业发展趋势分析与投资前景预测报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;融资性担保行业是指担保人与银行业金融机构等债权人约定&#xff0c;当被担保人不履行对债权人负有的融资性债务时&#xff0c;由担保人依法承担…

Go:使用 go-micro 构建微服务(一)

一、微服务 什么是微服务&#xff08;microservice&#xff09;&#xff1f;这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。 大型产品如果不能正常维护&#xff0c;就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传统的单体服务…

语音识别芯片LD3320介绍再续

语音识别芯片LD3320驱动程序 1、芯片复位 复位就是对LD3320芯片的第47腿&#xff08;RSTB*&#xff09;发送低电平&#xff0c;然后需要对片选CS做一次拉低→拉 高的操作&#xff0c;以激活内部DSP。按照以下顺序&#xff1a; void LD_reset() { RSTB1;delay(1);RSTB0;delay…

TencentOS 3.1下安装zabbix 5.0.30

TencentOS是使用官方镜像文件安装的虚拟机。 虚拟机为virtualBox 6.1 zabbix 使用zabbix官方安装包编译安装。 下载地址: Download Zabbix sources zabbix软件包解包,本次安装解包在/opt下 zabbix需要nginx、php、mysql等软件支持,因此先安装它们。 安装mysql如下: yu…

Usaco Training刷怪旅 第二层第二题:Transformations

usaco training 关注我持续更新usaco training A square pattern of size N x N (1 < N < 10) black and white square tiles is transformed into another square pattern. Write a program that will recognize the minimum transformation that has been applied to t…

QCon直击|闲鱼推荐大规模应用背后的工程实践

讲师介绍闲鱼技术部 | 吴白万小勇&#xff08;吴白&#xff09;&#xff0c;闲鱼服务端专家。毕业于南京大学计算机系&#xff0c;目前负责闲鱼技术推荐架构。推荐在闲鱼的应用不同于搜索的确定性&#xff0c;推荐场景面临的问题往往是不确定的。但是正是因为这种不确定&#x…

Kafka无法对外暴露端口的相关解决方案

1、kafka开放外部访问 1.1、修改kafka configMap 修改内容如下 # 修改EXTERNAL_ACCESS_IP变量&#xff0c;值为真实的外网IP export EXTERNAL_ACCESS_IP${真实的外网IP} 1.2、重启kafka # 重启kafka kubectl rollout restart statefulset kafka -n default # 查看kafka状态 k…

盛邦安全将于12月27日上会,2022年前三季度收入1亿元

12月20日&#xff0c;上海证券交易所披露的科创板上市委2022年第112次审议会议公告显示&#xff0c;远江盛邦&#xff08;北京&#xff09;网络安全科技股份有限公司&#xff08;下称“盛邦安全”&#xff09;将于2022年12月27日上会。 目前&#xff0c;盛邦安全已经提交了招股…

在tushare量化平台可以获取哪些数据?

沪深股票数据是Tushare量化最传统、最具历史意义的数据服务项目从一开始就为投资者特别是定量投资者提供了稳定、方便的接口。 1.基础数据 提供交易和回测所需要的基础信息&#xff0c;目前主要提供的是上市公司股票列表和交易日历等 2.行情数据 行情数据目前还在继续规则和…

“史上最贵”卡塔尔世界杯,有哪些炫酷的“黑科技”?

2022年卡塔尔世界杯投入超过2200亿美元&#xff0c;堪称“史上最贵世界杯”。这些投入不仅用在了场馆、道路等基础设施建设中&#xff0c;也体现在让人震撼的芯片传感器、人工智能、先进技术等“黑科技”上。今年的卡塔尔世界杯有什么“科技感十足”的先进技术&#xff1f;让我…

坐标系相关整理

参考url:https://www.jianshu.com/p/06890af3d780 Dicom坐标系 x轴&#xff1a;从右手到左手 y轴&#xff1a;从前胸到后背 z轴&#xff1a;从脚到头 解刨学坐标系 医学人体三解剖面&#xff0c;医疗影像三维图&#xff0c;主要是针对人体来说。解剖学上的坐标体系&#xff0…

常见垃圾回收器

1.Serial垃圾回收器 Serial&#xff08;串行&#xff09;收集器是最基本、历史最悠久的垃圾收集器了&#xff0c;是一个单线程收集器 它只会使用一个垃圾收集线程去完成垃圾收集工作 它在进行垃圾收集工作的时候必须暂停其他所有的工作线程&#xff08; "Stop The Worl…

C++——STL之vector详解

C——STL之vector详解&#x1f3d0;1.什么是vector&#x1f3d0;2.vector的使用&#x1f3c0;2.1vector的实例化&#x1f3c0;2.2访问遍历vector⚽2.2.1**下标[]**⚽2.2.2**迭代器**⚽2.2.3**范围for**&#x1f3c0;2.3.vector容量问题⚽2.3.1size和capacity⚽2.3.2reserve和re…

二叉树先、中、后遍历递归+非递归

文章目录前言思路设计思想非递归前序遍历的思路非递归中序遍历的思路非递归后序遍历的思路层序遍历的思路完整代码MyBinaryTree.hMyBinaryTree.cppMain.cpp效果展示前言 作者水平有限&#xff0c;全部的代码是学习前人部分原创不要搬代码&#xff0c;一定要借鉴学习&#xff0…