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

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

在使用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://www.lryc.cn/news/117447.html

相关文章:

  • Netty面试题1
  • 水质分析积分球定义和原理
  • 自然语言处理从入门到应用——LangChain:记忆(Memory)-[基础知识]
  • phpstorm添加vue 标签属性绑定提示和提示vue的方法提示
  • 从计算到人类知识:ChatGPT与智能演化
  • Leetcode每日一题:2681. 英雄的力量(2023.8.1 C++)
  • 【学习】若依源码(前后端分离版)之 “ 异常处理”
  • 天花板级,Python接口自动化测试-接口关联封装调用(实例)
  • yolov5代码解读之yolo.py【网络结构】
  • Docker之jenkins部署harbor在harbor中完成部署
  • 安装Jenkins
  • 大运空瓶行动,绘就生态文明画卷
  • tomcat7.exe 启动闪退解决
  • java修改jar包中的配置文件
  • 半导体器件||的学习
  • jenkins流水线
  • 视频监控汇聚EasyCVR平台WebRTC流地址无法播放的原因排查
  • NOSQL——redis的安装,配置与简单操作
  • 《合成孔径雷达成像算法与实现》Figure3.7
  • Linux 目录结构
  • 7天获英国名校邀请函|CSC青骨获批成功案例补记
  • ffmpeg ts列表合并为mp4
  • MATLAB程序初始化OpenFOAM颗粒位置
  • 软件第三方CMA、CNAS测试的目的和意义,信息化建设验收测试依据是什么?
  • CNN成长路:从AlexNet到EfficientNet(02)
  • 【Kubernetes】yaml文件格式
  • Python web实战之Django的文件上传和处理详解
  • android res中values-swxxdp计算
  • c动态内存申请
  • C#8.0本质论第一章--C#概述