存储 Bean 对象更加简单的方式

前置操作

        如果是在 spring-config 中添加 bean 标签来注册内容,每个类都要弄一次就显得麻烦和臃肿了,对于 new 操作而言就没有什么优势了。因此 spring 就引入了注解操作来实现对 Bean 对象的存储。

配置扫描路径

        想要将对象成功的存储到 Spring 中,就需要配置⼀下存储对象的路径,只有在这个路径下的(也包含子路径)所有类,添加了注解才能被正确的识别并保存到 Spring 中。
<bean> 和 component-san 是可以同时存在的

         如果不是在配置的扫描包下的类对象,即使添加了注解,也是不能被存储到 Spring 中的。

使用五大类注解

@Controller

        控制器:验证请求数据的正确性(安保系统)

@Controller 实现 Bean 存储:

package com.java.demo;import org.springframework.stereotype.Controller;@Controller  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentController {public void say() {System.out.println("hi,Controller");}
}

读取 Bean:

        标红的解释:这里本来指的是这个 Bean 对象的 id 的,但是这里使用的是类注解来存储的,所以这里的值应该是:使用首字母为小写的原类名。如果原类名的第一个和第二个字母均为大写,那么此处的值则为 原类名。

@Service

        服务层:编排和调度具体执行方法(客服中心)

package com.java.demo;import org.springframework.stereotype.Service;@Service  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentService {public void say() {System.out.println("hi,Service");}
}

@Repository

        持久层:和数据库进行交互,操作数据库(执行者)= DAO 层(Data Access Object)

package com.java.demo;import org.springframework.stereotype.Repository;@Repository  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentRepository {public void say() {System.out.println("hi,Repository");}
}

@Component

        组件:用来存放工具类

package com.java.demo;import org.springframework.stereotype.Component;@Component  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentComponent {public void say() {System.out.println("hi,Component");}
}

@Configuration

        配置项:项目中的一些配置

package com.java.demo;import org.springframework.context.annotation.Configuration;@Configuration  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentConfiguration {public void say() {System.out.println("hi,Configuration");}
}

五大类的关系

        通过查看源码可以发现:@Controller、@Service、@Repository、@Configuration 这四个都是@Component 的 “子类”,都是针对于 @Component 的扩展。

五大类注解的由来

JavaEE 的标准分层

阿里的分层标准

        结论:无论是官方的标准还是行业的标准,都会拥有 @Controller、@Service、@Repository 这三个基本层,而 @Configuration、@Component 则是属于 “扩展” 的。

方法注解

@Bean

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

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

相关文章

RustDesk服务器

一、安装node.js # cd /usr/local # wget https://registry.npmmirror.com/-/binary/node/v16.18.1/node-v16.18.1-linux-x64.tar.gz # tar -zxvf node-v16.18.1-linux-x64.tar.gz -C ./node-v16.18.1 # cd cd node-v16.18.1 # cd node-v16.18.1-linux-x64/ # mv * ../二、配置…

python onnxruntime DLL load failed: 找不到指定的模块

在安装ddddocr 报错&#xff1a;ImportError: DLL load failed while importing onnxruntime_pybind11_state: 找不到指定的模块 试了降到onnxruntime 1.8.0版本&#xff0c;升级pip再重装ddddocr均无效。 这个错误通常是因为缺少onnxruntime_pybind11_state.dll文件或者没有…

适用于STM32的U8G2回调函数例程

简介 U8g2 还包括 U8x8 库。U8g2 和 U8x8 的功能包括&#xff1a; U8g2 包括所有图形程序&#xff08;线/框/圆画&#xff09; 支持很丰富的字体库 需要微控制器中的一些内存来渲染显示屏&#xff08;需要消耗较多的ram空间资源&#xff09;U8x8 仅文本输出&#xff08;字符&am…

Liunx中使用他人身份来执行命令或新建文件

前言 在一些情况下。我们想要借助某个用户的身份来执行命令或者新建文件&#xff0c; 比如某个用户的bash是 nologin 或者 false。 该怎么做呢&#xff1f;&#xff1f; 答&#xff1a;使用 sudo -u 即可。 例如&#xff1a; sudo -u ygz1 touch temp1.txt哈哈哈&#xff0…

android gradle8.3 发布插件踩过的坑

之前写过gradle6.x和gradle7.x的插件&#xff0c;会有一些改动&#xff0c;到8.x我发现又有一些变化&#xff0c;记录一下&#xff0c;防止后边再遇到相同的情况 下边是插件的gradle文件配置 plugins {id("java-gradle-plugin") //会自动引入java-library、gradleAp…

【ES实战】ES集群机器磁盘IO过高告警分析

ES集群机器磁盘IO过高告警分析 文章目录 ES集群机器磁盘IO过高告警分析现象分析思路与手段获取告警机器的磁盘高IO时的文件通过IO文件确认索引分析思路 优化第一步&#xff1a;每个data实例用不同的磁盘第二步&#xff1a;业务调整数据写入的集中程度第三步&#xff1a;扩容 反…

摄影后期照片编辑工具:LrC2024 for Mac/win 中文激活版

LrC2024&#xff08;Lightroom Classic 2024&#xff09;是 Adobe 公司推出的一款专业级别的照片编辑和管理软件。它是 Lightroom Classic CC 的升级版&#xff0c;具有更多的功能和改进。 这款软件主要用于数字摄影师和摄影爱好者处理、编辑和管理他们的照片。它提供了一套强大…

android 调试UI 按钮无法点击事件问题

软件平台&#xff1a;Android11 硬件平台&#xff1a;QCS6125 问题&#xff1a;UI控件无法点击 首先&#xff0c;打开了Android自带的pointer_location报点轨迹&#xff0c;用电磁笔点击按钮&#xff0c;发现有点位&#xff0c;但是控件未见响应&#xff0c;基本排除硬件、驱动…

[英语单词] production quality

Our goal is to implement a production quality switch platform that supports standard management interfaces and opens the forwarding functions to programmatic extension and control. 说在openswitch的文档里有说这两词&#xff0c;含义是产品质量。是production修…

CAPL汽车编程语言实例

CAPL汽车编程语言实例 在汽车行业中&#xff0c;CAPL&#xff08;Communication Access Programming Language&#xff09;是一种广泛使用的编程语言&#xff0c;主要用于CAN&#xff08;Controller Area Network&#xff09;网络的开发和测试。CAPL语言以其强大的功能和灵活性…

【网络安全的神秘世界】在win11搭建pikachu靶场

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 下载pikachu压缩包 https://github.com/zhuifengshaonianhanlu/pikachu 下载好的pikachu放在phpstudy_pro/www目录下 创建pikachu数据库 打开phpstudy软件…

【docker】docker启动bitnami/mysql

说明&#xff1a;-v 宿主机目录:docker容器目录&#xff0c;-p 同理 注意&#xff1a;/opt/bitnami/mysql/conf/bitnami 目录自定义conf的目录&#xff0c;不能使用原有的/opt/bitnami/mysql/conf 目录。 容器启动后可在宿主机的/宿主/mysql8.0/conf&#xff0c;添加my_custom.…

独立开发的轻量级简洁开源论坛BBS PHP源码

最新的轻量级开源论坛php源码发布啦&#xff01;这是一款独立开发的论坛系统&#xff0c;可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者&#xff0c;这款论坛系统非常适合你入门学习。不过&#xff0c;需要注意的是&#xff0c;由于它并没有进行商业化改造&#xf…

docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)

EFK日志系统搭建 EFK日志系统介绍功能需求搭建elasticsearch集群规划前提部署核对证书及权限 EFK日志系统介绍 Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎&#xff0c;允许进行全文、结构化搜索&#xff0c;它通常用于索引和搜索大量日志数据&#xff0c;也可用于…

【ARM-Linux篇】u-boot编译

一、u-boot简介 uboot是一种通用的引导加载程序&#xff0c;它可以用于多种嵌入式系统&#xff0c;支持多种操作系统&#xff0c;如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备&#xff08;如Flash, SD卡等&#xff09;加载到内存中&#xff0c;并执…

点云从入门到精通技术详解100篇-基于超体素类型的三维点云区域生长分割(续)

目录 2.6.4 凹凸性约束 3基于超体素类型的三维点云区域生长分割算法 3.1 算法描述

一个令人惊艳的开源技术盛宴,来了!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 在 GitHub 上&#xff0c;每天都会诞生各种实用的开源项目&#xff0c;这些项目在不同行业与领域得到充分应用&#xff0c;推动技术发展&#xff0c;让普通人也能够真切感受到科技魅力。 而…

使用 EBS 和构建数据库服务器并使用应用程序与数据库交互

实验 4&#xff1a;使用 EBS 实验概览 本实验着重介绍 Amazon Elastic Block Store (Amazon EBS)&#xff0c;这是一种适用于 Amazon EC2 实例的重要底层存储机制。在本实验中&#xff0c;您将学习如何创建 Amazon EBS 卷、将其附加到实例、向卷应用文件系统&#xff0c;然后进…

基于vue3 elment+ 的文件及表单参数上传,响应接受

这里有几个关键是 第一个是 上传用Content-Type: multipart/form-data方式向后台请求数据 application/json不行。这里需要单独设置一下覆盖一下通用的请求api方法 //一般通用application/json 请求api方式的写法 export const getbuttonlist () > { return request.get(…

ES 生命周期管理

一 .概念 ILM定义了四个生命周期阶段&#xff1a;Hot&#xff1a;正在积极地更新和查询索引。Warm&#xff1a;不再更新索引&#xff0c;但仍在查询。cold&#xff1a;不再更新索引&#xff0c;很少查询。信息仍然需要可搜索&#xff0c;但是如果这些查询速度较慢也可以。Dele…