使用Spring五大注解来更加简单的存储Bean对象

news/2024/7/7 22:25:52

在使用Spring框架的时候我们如果使用这种方式来存储bean对象的话未免有点太麻烦了

    <bean id="xxx" class="xxx"> </bean>

为了简化存储Bean对象的操作,我们可以使用五大类注解来进行存储Bean对象

我们首先要在配置文件配置扫描路径,需要主要的是,只有在扫描路径里面的类添加了五大类注解才可以被添加到Spring容器中,否则即使添加了五大类注解也能被添加到Spring容器中

<content:component-scan base-package="xxxx"> </content:component-scan>

在这里我举了一个例子,大家看一看

这里我没有把Controller这个包配置到扫描路径下,所以即使我添加了五大类注解也不会被添加到Spring容器中!

那么这么做的目的究竟是为什么呢?答案很简单!是为了保证Spring框架的性能

假如不需要扫描路径,直接将添加五大类注解,那么Spring一定会扫描所有的包底下所有的类,那么这么做一定会消耗大量的资源和时间,使得Spring的性能变差。假如我们使用了扫描路径,那么Spring就只需要扫描该包底下的所有类,查看哪些类添加了五大类注解,并将它们添加到Spring容器中。


如果使用了五大类注解将Bean对象存储到Spring容器中,那么应该怎样取出来呢?

我们知道如果将Bean存储到Spring容器中,那么就一定需要给Bean取一个id,方便标识

我们查询源码可以发现,那么使用五大类注解后,id的命名规则就有两种了

    public static String decapitalize(String name) {
        if (name == null || name.length() == 0) {
            return name;
        }
        if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
                        Character.isUpperCase(name.charAt(0))){
            return name;
        }
        char chars[] = name.toCharArray();
        chars[0] = Character.toLowerCase(chars[0]);
        return new String(chars);
    }

如果该类的名字第一个字母是大写第二个字母是小写的话,那么存储到Spring的Bean的id与该类的名字一致的同时将第一个字母修改成小写

类名:StudentController  -----> Bean的id:studentController

如果该类的名字第一个字母是大写第二个字母是大写的话,那么存储到Spring的Bean的id与该类的名字一致

类名:SController  -----> Bean的id:SController


当我们看看五大类注解的源码的时候,我们会发现其实除了@Component以外的四个类都是实现了@Component注解的,换言之其实他们五大类注解都只是一个注解!

那么为什么还需要分五大类注解呢?想要知道这个问题的答案,我们首先需要知道一个概念叫做Spring分层架构!

Controller层相当于是一个“保安”,与前端打交道,用来检验前端传过来的数据是否符合规范

Service层相当于是“服务中心”,将服务进行调度,告诉各个数据应该“去哪”

DAO层则是直接与数据库打交道的,操纵数据库,对数据进行持久化存储

@Controller表示逻辑业务层

@Service表示服务层

@Reposity表示持久层

@Configuration表示配置层

@Compoent表示工具层

所以五大类注解的作用就是为了让程序更好的区分各个类的作用是什么!


http://lihuaxi.xjx100.cn/news/1427185.html

相关文章

【Essential C++学习笔记】 第一章 C++编程基础

第一章 C编程基础 1.1 如何撰写C程序 1.命名空间之 using nanespace std; ​ using和 namespace都是C关键词。std 是标准程序库所驻之命名空间(namespace〉的名称。标准程序库所提供的任何事物&#xff08;诸如 string class 以及cout, cin这两个iostream类对象&#xff09;…

什么是LIMS系统,LIMS实验室管理系统

LIMS是实验室信息管理系统&#xff0c;全称是Laboratory Information Management System&#xff0c;是将以数据库为核心的信息化技术与实验室管理需求相结合的信息化管理工具。它是由计算机硬件和应用软件组成&#xff0c;能够完成实验室数据和信息的收集、分析、报告和管理&a…

【JS 获取日期时间方法与常用的组合方法】

JS 获取时间与日期 JS提供的方法1. Date()2. getTime()3. getFullYear()4. getMonth()5. getDate()6. getDay()7. getHours()8. getMinutes()9. getSeconds()10. getMilliseconds() 常用组合方法获取年月日获取时分秒获取距离现在的时间&#xff08;几分钟前&#xff0c;昨天..…

MySQL和钉钉单据接口对接

MySQL和钉钉单据接口对接 数据源系统:钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工牌…

C#8.0本质论第二章--数据类型

C#8.0本质论第二章–数据类型 2.1基本数据类型 C#的基本数据类型都有关键字与之关联&#xff0c;decimal是特殊的浮点数类型&#xff0c;能存储大数字而无表示错误。 2.1.1整数类型 C#中有8种整数类型 类型大小BCL名称后缀sbyte8位System.SBytebyte8位System.Byteshort16位…

【JavaSpring】依赖注入

如何使用 1.强制依赖用构造器注入&#xff0c;setter注入可能出现null对象 2.可选依赖用setter注入 3.Spring倡导用构造器&#xff0c;第三方框架都用的是构造器 4.有必要时两个可以同时用 5.如果受控对象没有提供setter方法就必须使用构造器注入 6.自己开发推荐用setter…

c++map和set剖析

文章参考文献&#xff1a;cplusplus 博主&#xff1a;拖拉机厂第一代码手 gitee:拖拉机厂第一代码手 c专栏&#xff1a;C 目录 &#x1f9d9;&#x1f3fc;‍♂set剖析&#x1f9da;&#x1f3fc;set简介&#x1f9da;&#x1f3fc;set模板参数列表&#x1f9da;&#x1f3fc;s…

嵌入式面试7

linux 1、LINUX下的Socket套接字和Windows下的WinSock有什么共同点&#xff1f;请从C/C语言开发的角度描述&#xff0c;至少说出两点共同点。&#xff08;10分&#xff0c;说得好的每点加5分&#xff0c;没有上限。精通SOCK编程者破格录用。&#xff09; 本题的目的就是考考应…