当前位置: 首页 > news >正文

Spring更加简单的读取和存储对象

前言:在上篇文章中,小编写了一个Spring的创建和使用的相关博客:Spring的创建和使用-CSDN博客,但是,操作/思路比较麻烦,那么本文主要带领大家走进:Spring更加简单的读取和存储对象!

本文主要讲解用注解来实现Spring更加简单的读取和存储对象:五大类注解

  • @Controller:控制器,验证用户请求的数据正确性(安保系统)
  • @Service:服务,编排和调度具体执行方法的(客服中心)
  • @Repository:持久层,和数据库交互(执行者)
  • @Component:组件(工具类)
  • @Configuration:配置项(项目中的一些配置)

前置工作:配置扫描路径(重要)

注意:想要将对象成功的存储到Spring中,我们需要配置一下存储对象的扫描包路径,只有被配置的包下所有类,添加了注解,才能被正确的识别并保存到Spring中!

在spring-config.xml文件中添加如下配置

       <conent:component-scan base-package="com.java.demo"></conent:component-scan>

因此,在上述代码的基础上,要求:五大类注解必须在component-scan包下。但是,即使在component-scan下,如果没有五大类注解,一样是不能将当前对象存储到spring中的,在component-scan下的所有子包下的类,只要加了五大类注解,同样能存储到spring中!!

当我们查看五大类源码以后,可知:

可以认为:@Controller/@Service/@Repository/@Configuration都是@Component“子类”,都是针对于@Component的“一个扩展!!

那么,为什么需要有五大类注解??仅需要一个@Component不就啥事都解决了吗??

其实,五大类注解的本质目的:让程序员看到注解之后,知道当前的类的作用!!

有了这个问题,我们就不得不谈:JavaEE标准分层了:

在JavaEE标准分层中(至少分3层):

  1. 控制层
  2. 服务层
  3. 数据持久层

Bean命名规则

默认情况下是首字母小写,如果类名第一个字母和第二个字母都为小写的情况下,Bean名称为原类名。

使用方法注解@Bean存储对象到Spring中(要求:使用该方法注解@Bean的方法,一定要有返回值)

注意事项

  1. @Bean命名规则和五大类注解的命名规则不同

    @Bean命名规则,默认情况下,@Bean存储的对象的名称=方法名

    User user=context.getBean("user1",User.class);

  2. @Bean注解必须要配合五大类注解一起使用(处于Spring性能设计所规定的策略)

    创建User对象:

    package com.spring.demo;public class User {private Integer uid;private String username;private String password;private Integer age;public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid = uid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
    }
    

    将User对象放入Spring容器中:

    package com.spring.demo;import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;@Component
    public class UserBeans {@Beanpublic User user1(){User user=new User();user.setUid(1);user.setUsername("张三");user.setPassword("123456");user.setAge(18);return user;}
    }
    

    那么,从Spring容器中获取User对象:

    package com.spring.demo;import org.springframework.context.ApplicationContext;public class App {public static void main(String[] args) {//得到Spring 容器ApplicationContext context= new ClassPathXmlApplicationContext("spring.config.xml");User usr=context.getBeen("user1",User.class);System.out.println(usr.getUsername());}
    }
    

    当然,对于上述的@Bean可以进行重命名

    @Bean(value = {"user1","u1"})
    @Bean(name = {"user1","u1"})
    

    当你给@Bean进行重命名以后,此时只能只要重命名的名字,才可以获得对象,默认使用方法名获取对象的方式就不能用了!!

    Spring容器中允许将同一个类型的对象,存储到容器多个(多份)

相关文章:

Spring更加简单的读取和存储对象

前言&#xff1a;在上篇文章中&#xff0c;小编写了一个Spring的创建和使用的相关博客&#xff1a;Spring的创建和使用-CSDN博客&#xff0c;但是&#xff0c;操作/思路比较麻烦&#xff0c;那么本文主要带领大家走进&#xff1a;Spring更加简单的读取和存储对象&#xff01; 本…...

Webpack5 系列:Babel 的配置

1.前言 本篇将介绍对于项目中 JS 文件的处理。 2.babel-loader 2-1.依赖安装 npm install -D babel-loader babel/core babel/preset-env2-2.Loader 配置 webpack.config.js module: {rules: [{test: /\.?js$/,exclude: /node_modules/,use: {loader: babel-loader}}] }…...

【Spring】DI依赖注入,Lombok以及SpEL

文章目录 1.什么是DI依赖注入2. set方法注入3. ref属性4. 有参构造方法注入5. Lombok6. SpEL 1.什么是DI依赖注入 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;也是Spring框架的核心概念之一。其基本思想是将程序中的各…...

甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 本文将为大家揭示DHTMLX Gantt自定义的典型用例&#xff0c;包括自定义任务、网格的新外观等&#xff0c;来展示其功能的强大性&…...

auto自动类型推导总结

auto 自动推导的规则很多、很细&#xff0c;当涉及移动语义、模板等复杂的规则时&#xff0c;很容易绕进去。因此&#xff0c;在使用 auto 进行自动推导时&#xff0c;牢记以下几点&#xff1a; auto 推导出的是 “值类型”&#xff0c;不会是 “引用类型”。auto 可以和 cons…...

透视2023,如何看清中国SaaS的未来之路?

导读&#xff1a;什么是更适合中国市场的SaaS道路&#xff1f; 如果用一个关键词概括2023年的SaaS产业&#xff0c;很多人会想到&#xff1a;难。 在过去一年时间内&#xff0c;SaaS产业投融资环境巨变&#xff0c;一级市场投融资笔数和金额骤减。根据IT桔子数据&#xff0c;20…...

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…...

博客系统-项目测试

自动化博客项目 用户注册登录验证效验个人博客列表页博客数量不为 0 博客系统主页写博客 我的博客列表页效验 刚发布的博客的标题和时间查看 文章详情页删除文章效验第一篇博客 不是 "自动化测试" 注销退出到登录页面,用户名密码为空 用户注册 Order(1)Parameterized…...

Inspeckage,动态分析安卓 APP 的 Xposed 模块

前提 我在不久前写过《 APP 接口拦截与参数破解》的博文&#xff1b;最近爬取APP数据时又用到了相关技术&#xff0c;故在此详细描述一下 Inspeckage 的功能。&#xff08;环境准备本文不再赘述&#xff09; 功能 在电脑上访问 http://127.0.0.1:8008 就可以看到 inspeckage…...

Windows详细安装和彻底删除RabbitMQ图文流程

RabbiitMQ简介 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff1a;Advanced Message Queue Protocol&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而聚类和故障转移是构建在开放…...

自定义表单规则

const checkF (rule, value, callback) > { if (!value || value ) { callback(new Error(请输入XXXX)); } else { var params new URLSearchParams(); params.append(参数名, value); axios.post(url, params).then(operation > { if (operation && operatio…...

Spring 中 Bean 的作用域有哪些?Spring 中有哪些方式可以把 Bean 注入到 IOC 容器?

Spring 框架里面的 IOC 容器&#xff0c;可以非常方便的去帮助我们管理应用里面的Bean 对象实例。我们只需要按照 Spring 里面提供的 xml 或者注解等方式去告诉 IOC 容器&#xff0c;哪些 Bean需要被 IOC 容器管理就行了。 生命周期 既然是 Bean 对象实例的管理&#xff0c;那意…...

【01低功耗蓝牙开发】

低功耗蓝牙 低功耗蓝牙背后有个基本的概念&#xff1a;任何事物都有状态。状态可以是任何东西&#xff0c;如温度&#xff0c;电池状态等越简单的系统越便宜&#xff0c;开发更迅速&#xff0c;包含更少的错误&#xff0c;更加强健。一种技术想要获得成功必须降低成本。服务器…...

【Java 进阶篇】Java BeanUtils 使用详解

Java中的BeanUtils是一组用于操作JavaBean的工具&#xff0c;它允许你在不了解JavaBean的具体内部结构的情况下&#xff0c;访问和修改其属性。本文将详细介绍Java BeanUtils的使用&#xff0c;包括如何获取和设置JavaBean的属性&#xff0c;复制属性&#xff0c;以及如何处理嵌…...

YugaByteDB -- 全新的 “PostgreSQL“ 存储层

文章目录 0 背景1 架构1.1 Master1.2 TServer1.3 Tablet 2 读写链路2.1 DDL2.2 DML2.3 事务 3 KEY 的设计4 Rocksdb 在 YB 中的一些实践总结 0 背景 YugaByteDB 的诞生也是抓住了 spanner 推行的NewSQL 浪潮的尾巴&#xff0c;以 PG 生态为基础 用C实现的 支持 SQL 以及 CQL 语…...

众佰诚:抖音上做生意卖什么好

随着科技的发展&#xff0c;越来越多的人开始利用网络平台进行创业。抖音作为目前最火的短视频平台之一&#xff0c;也成为了许多人选择的创业渠道。那么&#xff0c;在抖音上做生意卖什么好呢? 首先&#xff0c;我们可以考虑一些具有创新性和独特性的产品。例如&#xff0c;手…...

【Redis】环境配置

环境配置 Linux版本&#xff1a; Ubuntu 22.04.2 LTS 下载redis sudo apt install redis 启动redis redis-server 输入redis-server启动redis竟然报错了&#xff0c;原因是redis已经启动&#xff0c;网上大多数的解决方案如下&#xff1a; ps -ef | grep -i redis 查询redi…...

设计交换机原理图前应先理清的框图

一、系统布局图 需重点考虑“外壳、电源、风扇、主板&#xff08;包含MAC、CPU、PHY&#xff09;、指示灯、管理网口/串口、电口/光口等连接器”在整机中的大致位置&#xff0c;在系统布局图中予以体现。 二、系统框图 &#xff08;1&#xff09;电源整体框图&#xff1b; &…...

Bellman-ford 贝尔曼-福特算法

Bellman-ford算法可以解决负权图的单源最短路径问题 --- 它的优点是可以解决有负权边的单源最短路径问题&#xff0c;而且可以判断是否负权回路 它也有明显的缺点&#xff0c;它的时间复杂度O&#xff08;N*E&#xff09;&#xff08;N是点数 &#xff0c; E是边数&#xff09…...

Docker数据目录迁移解决方案

前置工作 使用以下命令查询当前docker数据目录安装路径&#xff1a; docker info | grep "Docker Root Dir"下文以 /home/rain/docker 这个路径作为要迁移的新 Docker 安装(存储)目录 迁移方案 方法一&#xff1a;软链接 停掉Docker服务&#xff1a; systemctl…...

遥感影像裁剪避坑指南:如何用ENVI5.3的Subset功能精准提取县区数据(含背景值设置技巧)

遥感影像裁剪避坑指南&#xff1a;ENVI5.3 Subset功能深度解析与实战技巧 当你在处理县域尺度的遥感影像分析时&#xff0c;是否遇到过裁剪后图像边缘出现黑边、数据丢失或坐标错位的问题&#xff1f;这些看似简单的操作细节&#xff0c;往往成为影响后续分析精度的关键因素。本…...

DS1202示波器功能详解与实战操作指南

1. DS1202示波器核心功能解析 第一次拿到DS1202示波器时&#xff0c;面对密密麻麻的按键和接口确实有点懵。但用久了就会发现&#xff0c;它的设计其实非常人性化。咱们先从最常用的垂直控制区说起——这是调节波形高低胖瘦的关键区域。 垂直位移按键就像给波形装了个电梯&…...

一文讲清楚 OpenClaw 是什么,以及 Windows 下的部署

OpenClaw 到底是什么1. 它在系统里干的事&#xff1a;接入层 运行时管理很多人第一次看到 OpenClaw&#xff0c;会把它当成“一个聊天 UI”。更工程化的视角是&#xff1a;它负责把外部请求接进来&#xff0c;并把后面的执行系统跑起来、管起来。接入层&#xff1a;把外部入口…...

OpenClaw技能商店:分享自定义nanobot模块开发经验

OpenClaw技能商店&#xff1a;分享自定义nanobot模块开发经验 1. 为什么需要自定义技能模块 去年夏天&#xff0c;当我第一次接触OpenClaw时&#xff0c;就被它的自动化能力所吸引。但很快我发现&#xff0c;官方提供的标准技能虽然强大&#xff0c;却无法完全满足我的个性化…...

Qwen3-TTS-12Hz-1.7B-CustomVoice效果展示:日语动漫风+韩语偶像音色

Qwen3-TTS-12Hz-1.7B-CustomVoice效果展示&#xff1a;日语动漫风韩语偶像音色 想不想让你的AI助手用元气满满的日语动漫腔跟你打招呼&#xff1f;或者用温柔甜美的韩语偶像音色为你朗读一段歌词&#xff1f;今天&#xff0c;我们就来深度体验一下Qwen3-TTS-12Hz-1.7B-CustomV…...

春联生成模型-中文-base应用场景解析:图书馆数字文化服务实战

春联生成模型-中文-base应用场景解析&#xff1a;图书馆数字文化服务实战 1. 引言&#xff1a;传统文化与AI的碰撞 春节贴春联是中国延续千年的文化习俗&#xff0c;一副好春联不仅承载美好祝愿&#xff0c;更体现文化底蕴。如今&#xff0c;AI技术让这一传统焕发新生。在图书…...

3个步骤解决老旧系统Python支持难题:Windows 7及以上系统兼容性解决方案

3个步骤解决老旧系统Python支持难题&#xff1a;Windows 7及以上系统兼容性解决方案 【免费下载链接】PythonVista Python 3.9 installers that support Windows 7 SP1 and Windows Server 2008 R2 项目地址: https://gitcode.com/gh_mirrors/py/PythonVista 在企业办公…...

3步搞定浏览器脚本:Greasy Fork小白也能懂的终极指南

3步搞定浏览器脚本&#xff1a;Greasy Fork小白也能懂的终极指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 你是否厌倦了网页上烦人的广告&#xff1f;想要自动填充表单、一键下载视…...

深入探索UEFI Shell中的dh命令:高效检测系统Protocol安装状态

1. UEFI Shell与dh命令基础认知 刚接触UEFI开发时&#xff0c;我经常遇到这样的困扰&#xff1a;某个驱动明明编译通过了&#xff0c;运行时却提示"Protocol not found"。传统做法是在代码里插入调试语句&#xff0c;用gBS->LocateProtocol检查Protocol状态&#…...

COMSOL能源开采仿真:基质中瓦斯扩散、裂隙中瓦斯渗流,分析不同工况条件下渗透率演化、有效抽...

COMSOL能源开采仿真&#xff1a;基质中瓦斯扩散、裂隙中瓦斯渗流&#xff0c;分析不同工况条件下渗透率演化、有效抽采半径、抽采产量。 使用模块&#xff1a;PDE&#xff08;基质瓦斯扩散&#xff09;&#xff0c;达西定律/PDE&#xff08;裂隙瓦斯渗流&#xff09;&#xff0…...