SpringBoot编程---Day 01

news2024/11/27 12:42:52

目录

一、springboot介绍

(一)Spring Boot 特性

(二)了解自动配置原理

(三)springboot 入口功能详解

(四)自定义banner

(五)容器功能

(六)配置文件

二、相关注解

(一)创建Bean相关的注解

(二)Bean生命周期相关的注解

(三)依赖注入相关的注解 自动装配

(四)Spring MVC常用注解

(五)元注解

一、springboot介绍

        Spring Boot 是所有基于 Spring 开发的项目的起点。 Spring Boot 的设计是为了让你尽可能快的跑起来Spring 应用程序并且尽可能减少你的配置文件。简单来说就是 SpringBoot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven 整合了所有的 jar 包, spring boot 整合了所有的框架。

(一)Spring Boot 特性

        1、快速构建基于 Spring 的应用程序
        2、通过 Java main 能够快速启动内嵌的 Tomcat ,不需要打包部署 war
        3、可以根据提供 pom start 简化 Maven 配置,让 Maven 配置更加简单
        4、自动配置 Spring Spring MVC
        5、采用注解配置,几乎不用使用 XML 配置文件

(二)了解自动配置原理

        依赖管理
        自动配置

(三)springboot 入口功能详解

        @SpringBootApplication 组合注解 开启spriingboot的核心配置注解,等同于:@SpringBootConfiguration+@EnableAutoConfiguration + @ComponentScan。
        @SpringBootConfiguration相当于@Configuration 指定当前 java 类是一个配置类。
        @EnableAutoConfiguration 实现自动配置
        @ComponentScan 组件扫描 用来扫描文件所在包

(四)自定义banner

        1、先去编辑自己想要的banner(在线 Banner 地址:http://www.network-science.de/ascii/ https://patorjk.com/software/taag/ )

        2:将生成好的 banner.txt 文件放在 src/main/resources 下即可 [ 注意缓存需要 clean 一下 ]

(五)容器功能

        @Configuration的基本使用
        配置类组件
        @Bean 当前方法交给容器管理
         原生配置文件引入, 需要用到 @ImportResource 注解
        @Import 也可以导入配置文件,但是这个配置文件是【自定义的 java eg MyConfig
@Import({User.class,Matcher.class})
// 引入 xml配置
@ImportResource("classpath:spring.xml")

(六)配置文件

        配置文件类型:
        1 : application.properties
        2: application.yaml 类型
        基本语法:
        1 : key:value
        2:大小写敏感
        3:用缩进表示层级关系
        4:缩进不允许使用 tab 键 ,只允许使用 4 个空格
        5: # 代表注释
        6:字符串不需要加引号
        自定义配置文件
# 配置 端口号
# 优先级更高
server.port=8887
#spring.banner.image.location=classpath:tiao.jpg
#配置项目名称
#server.servlet.context-path=/demo
#配置文件可以自定义的
com.text.name = zhangsan
com.text.age = 18
com.text.sid = 1001

二、相关注解

(一)创建Bean相关的注解

        (1)@Component :可以使用此注解描述 Spring 中的 Bean ,但它是一个泛化的概念,仅仅表示一个组件( Bean ),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。
        (2)@Repository:用于将数据访问层(DAO 层)的类标识为 Spring 中的 Bean ,其功能与 @Component 相同。
        (3)@Service:通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean ,其功能与@Component 相同。
        (4)@Controller:通常作用在控制层(如 Struts2 Action SpringMVC Controller ),用于将控制层的类标识为Spring 中的 Bean ,其功能与 @Component 相同。

(二)Bean生命周期相关的注解

        (1)@Scope:注解在类名上,用于指定Bean 作用范围,等同于 xml 文件中配置 Bean 时使用 scope 属性。常用值singleton、 prototype
        (2)@PostConstruct:注解在方法上,指定Bean 创建时回调方法。相当于 xml 配置文件中标签中使用 init-method 属性的功能。
        (3)@PreDestroy:注解在方法上,指定Bean 销毁时回调方法。相当于 xml 配置文件中标签中使用 destroy-method 属性的功能。

(三)依赖注入相关的注解 自动装配

        (1)@Autowired
        自动装配:自动装配就是指 Spring 容器在不使用 和 标签的情况下,可以自动装( autowire )相互协作的 Bean之间的关联关系,将一个 Bean 注入其他 Bean Property 中。
        自动装配只需要较少的代码就可以实现依赖注入。但不能自动装配简单数据类型,比如 int boolean 、String 等,相比较显式装配,自动装配不受程序员控制。
        @Autowired注解可以应用到 Bean 的属性变量、属性的 setter 方法、非 setter 方法及构造函数等,配合对应的注解处理器完成 Bean 的自动配置工作。默认按照 Bean 的类型进行装配。
        (2)@Resource
        作用与 Autowired 相同,区别在于 @Autowired 默认按照 Bean 类型装配,而 @Resource 默认按照Bean 实例名称进行装配。
        @Resource 中有两个重要属性: name type
        Spring 将 name 属性解析为 Bean 的实例名称, type 属性解析为 Bean 的实例类型。如果指定 name属性,则按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配。如果都不指定,则先按Bean 实例名称装配,如果不能匹配,则再按照 Bean 类型进行装配;如果都无法匹配,则抛出NoSuchBeanDefinitionException 异常。
        (3)@Qualifier
        与 @Autowired 注解配合使用,会将默认的按 Bean 类型装配修改为按 Bean 的实例名称装配, Bean的实例名称由 @Qualifier 注解的参数指定。
        (4)@Value
        @Autowired注入另外的 bean ,而 @Value 注解则是注入值。由于在 java 源代码中注入常量值会带来硬编码问题,该注解使用较少。

(四)Spring MVC常用注解

        (1)@Controller:用于定义控制器类,控制器Controller 负责处理由 DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该 Model 返回给对应的 View 进行展示。
        (2) @RequestMapping:提供路由信息,负责URL Controller 中的具体函数的映射。
(注意:没有指定 method 属性值 ,那么请求处理方法可以支持 HTTP GET , POST 请求方式)

        (3)@ResponseBody:控制器方法加上 @ResponseBody注解后,返回值不是页面,而是数据。@ResponseBody注解过的方法,可以返回Map<String, Object>对象,spring mvc会将该对象转换成 json格式的字符串,然后放在响应体中响应给浏览器。(json格式与java对象的相互转换,需要添加jackson依赖 )

        (4)@RestController :@Controller和@ResponseBody的合集。 (注:Spring4.0增加的,继承自@Controller相当于 @Controller @ResponseBody

        (5)@RequestParam:在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”)

        注解在方法的参数上,指定一个请求参数名,封装到被注解的参数 。一旦有该注解,默认情况,一次请求中,必须要具有该指定的请求参数,否则服务器拒绝该次请求

        (6)@PathVariable :将请求URL中的模板变量映射到控制器方法的参数上,即取出uri模板中的变量作为参数。

        注解在方法的参数上,先在@RequestMapping中使用{占位符}来定义url ,使用@PathVariable("占位符") 来获取该占位符对应url中的值 封装到方法的参数中

        (7)@SessionAttributes:指定request域中共享的数据在session域中共享(特别注意:@SessionAttributes 只能声明在类上,不能声明在方法上!!)

        (8)@RequestHeader:用于获取请求消息中的请求头相关数据(/注解在方法的参数上,指定获取对应请求头的值,封装到方法的参数中)

        (9)@CookieValue:用于获取请求消息中的Cookie的值( 注解在方法的参数上,获取指定 cookie 的值,封装到方法的参数中 )
        (10)@GetMapping:组合注解,是@RequestMapping(method = RequestMethod.GET) 的缩写。该注解将限制只接受 HTTP GET的请求方式。
        (11)@PostMapping:组合注解,是@RequestMapping(method = RequestMethod.POST) 的缩写。该注解将限制只接受HTTP POST的请求方式。

(五)元注解

        元注解是 专门用来注解其他注解的注解 ,听起来有些绕口,实际上就是专门为自定义注解提供的注解。java.lang.annotation提供了四种元注解:
        l @Documented – 注解是否将包含在 JavaDoc
        l @Retention – 什么时候使该注解(SOURCE:仅存在于源代码中;CLASS:在 class字节码文件中存在;RUNTIME:运行时)
        l @Target – 注解用于什么地方
        l @Inherited – 是否允许子类继承该注解
        l @Repeatable - 是否可重复注解, jdk1.8

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

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

相关文章

(九)枚举器和迭代器(1)

一、枚举器和可枚举类型 复习完了数组之后&#xff0c;由于数组遍历的这个行为&#xff0c;跟枚举器有很大的相关性&#xff0c;所以接下来继续要学习与枚举器相关的内容。 1、使用 foreach 语句 int[] arr1 { 10, 11, 12, 13 };foreach (int item in arr1)//枚举元素Consol…

尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

【JVM 监控工具】性能诊断--JProfiler的使用

文章目录 背景一、Java 性能诊断工具简介二、简单命令行工具三、图形化综合诊断工具JVisualvmJProfiler 四、分布式应用性能诊断五、IDEA中设置JProfilerJProfiler是什么功能安装使用生成快照配置VM运行程序 背景 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&a…

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档

移动应用App已经渗透到每个人的生活、娱乐、学习、工作当中&#xff0c;令人激动、兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中。各类智能终端也在快速发布&#xff0c;而开发者对于全球移动设备的质量和性能却掌握甚少&#xff0c;App与设备的兼容性问题常常导致用…

【状态估计】基于卡尔曼滤波器的传感器直流电机驱动研究(Matlab代码、Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Navicat 受邀出席 PostgreSQL 技术峰会,欢迎莅临我们的展台了解 Navicat 工具包如何提升你的工作效能

Navicat 受邀出席 PostgreSQL 技术峰会成都站&#xff0c;欢迎童鞋们莅临我们的展台。你有机会与我们的专家面对面交流&#xff0c;并了解实用的 Navicat 工具包如何帮助PostgreSQL用户&#xff08;应用开发人员、DBA、运维人员以及数据分析师&#xff09;有效地提升日常的工作…

串口控制小车(二次开发)

0.资料 项目工程文件夹 分文件原理 之前的代码 1.L9110S电机驱动模块demo 2.串口通信&#xff08;习题4&#xff1a;PC发送字符串指令给单片机&#xff09; 3.wifi模块&#xff08;串口中断代码优化&#xff09; 3.蓝牙模块 1.串口指令控制小车_分文件 1、和单片机的接…

MVC、MVP、MVVM:详解2

概述 MVC、MVP、MVVM 都是在 Android 开发中经常用到的架构思想&#xff0c;它们都是为了更好地分离代码、提高代码可复用性、方便维护等目的而设计的。下面对这三种架构思想进行简单的介绍和比较。 MVC MVC 架构是最早被使用的一种架构&#xff0c;它把程序分成了三个部分&…

CVPR 2023 首届视觉异常检测(Visual Anomaly and Novelty Detection,VAND)挑战赛 Zero-shot 赛道冠军

这篇文章主要介绍一下我们在 CVPR 2023 VAND Workshop 的挑战赛中所采用的模型和方案。在 Zero-shot 赛道中我们获得了冠军&#xff08;Winner&#xff09;&#xff0c;在 Few-shot 赛道中&#xff0c;我们获得了第四名&#xff08;Honorable Mentions&#xff09;。 题目&…

怎么安装anaconda?anaconda安装详解!

Anaconda Navigator 是 Anaconda 的图形化管理界面&#xff0c;点击它即可进入 Anaconda 的图像化管理界面。许多小伙伴可能被朋友或者小编安利过Anaconda而跃跃欲试&#xff0c;今天小编就将Anaconda安装详解分享给大家。心动的小伙伴们赶紧安装起来吧&#xff01; 下载 官方…

1分钟教你配置好你的python环境

欢迎来到我们的系列博客《Python360全景》&#xff01;在这个系列中&#xff0c;我们将带领你从Python的基础知识开始&#xff0c;一步步深入到高级话题&#xff0c;帮助你掌握这门强大而灵活的编程语法。无论你是编程新手&#xff0c;还是有一定基础的开发者&#xff0c;这个系…

不能发现BUG的测试用例不是好的测试用例吗?

一般情况下技术岗面试都需要经历面试和笔试部分&#xff0c;面试过程中主要采用问答的形式&#xff0c;一般没有完全固定的回答&#xff0c;主要是根据自己的工作经验应答面试官的问题&#xff0c;而笔试部分更注重基础知识以及问题的常规解决方案。下面IT技术宅男为大家整理了…

C++案例

目录 一、while循环猜数组 二、 水仙花数 三、for循环敲桌子游戏 四、99乘法表 五、一维数组--元素逆置 六、冒泡排序 七、封装一个函数--利用冒泡排序&#xff0c;实现对整型数组的升序排序 八、结构体嵌套结构体 九、结构体排序 一、while循环猜数组 说明&#x…

经验总结:13 条自动化测试框架设计原则

1.代码规范 测试框架随着业务推进&#xff0c;必然会涉及代码的二次开发&#xff0c;所以代码编写应符合通用规范&#xff0c;代码命名符合业界标准&#xff0c;并且代码层次清晰。特别在大型项目、多人协作型项目中&#xff0c;如果代码没有良好的规范&#xff0c;那么整个框…

使用@Schedule注解实现定时任务,多线程执行定时任务,Cron表达式详解

Schedule注解实现定时任务&#xff0c;多线程执行定时任务&#xff0c;Cron表达式详解 使用Schedule注解实现定时任务Scheduled注解多线程执行定时任务Cron表达式Cron中的通配符 使用Schedule注解实现定时任务 1、首先&#xff0c;在项目启动类上添加 EnableScheduling 注解&am…

Vue CLI 全局事件总线 消息的订阅与发布

3.10. 全局事件总线&#xff08;GlobalEventBus&#xff09; 一种可以在任意组件间通信的方式&#xff0c;本质上就是一个对象&#xff0c;它必须满足以下条件 所有的组件对象都必须能看见他这个对象必须能够使用$on $emit $off方法去绑定、触发和解绑事件 使用步骤 定义全…

MySQL数据库基础 12

第十二章 MySQL数据类型 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择&#xff1f; 3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明 4. 定点数类型4.1 类型介绍 5. 位类型&#xff1a;BI…

CSS--Java EE

在前端的代码中&#xff0c;CSS 相关的代码写在什么位置呢&#xff1f; CSS 可以写在<style>标签中外部引入&#xff1a;输入 link: css写在 div 标签中 目录 一、选择器的种类 1 基础选择器 1.1 类选择器 1.2 id选择器 1.3 标签选择器 1.4 通用选择器 小结 2 …

Spring Security6 全新写法,大变样!

文章目录 1. WebSecurityConfigurerAdapter2. 使用 Lambda3. 自定义 JSON 登录3.1 自定义 JSON 登录3.1.1 自定义登录过滤器3.1.2 自定义登录接口 3.2 原因分析3.3 问题解决 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都废弃了&#x…

Java-IO流基础知识

目录 1.File类与路径知识 1.File类 2.Java中的路径知识 3.创建File类的实例 4.File类的方法使用 5.File类使用的注意点 2.IO流知识 1.IO流原理 2.文件的读入 3.read()的重载方法&#xff1a;难点 4.文件的写出 1.写出的说明 2.写出操作的具体步骤 5.文件的复制&am…