当前位置: 首页 > 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容器中允许将同一个类型的对象,存储到容器多个(多份)

http://www.lryc.cn/news/213295.html

相关文章:

  • Webpack5 系列:Babel 的配置
  • 【Spring】DI依赖注入,Lombok以及SpEL
  • 甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观
  • auto自动类型推导总结
  • 透视2023,如何看清中国SaaS的未来之路?
  • 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)
  • 博客系统-项目测试
  • Inspeckage,动态分析安卓 APP 的 Xposed 模块
  • Windows详细安装和彻底删除RabbitMQ图文流程
  • 自定义表单规则
  • Spring 中 Bean 的作用域有哪些?Spring 中有哪些方式可以把 Bean 注入到 IOC 容器?
  • 【01低功耗蓝牙开发】
  • 【Java 进阶篇】Java BeanUtils 使用详解
  • YugaByteDB -- 全新的 “PostgreSQL“ 存储层
  • 众佰诚:抖音上做生意卖什么好
  • 【Redis】环境配置
  • 设计交换机原理图前应先理清的框图
  • Bellman-ford 贝尔曼-福特算法
  • Docker数据目录迁移解决方案
  • 公共字段自动填充、菜品管理
  • 前端面试 面试多起来了
  • Qt常见类名关系整理
  • YOLO8实战:yolov8实现行人跟踪计数
  • shell脚本学习-2
  • web3:智能合约浏览器版本的 IDE - remix 使用教程
  • 信号类型(通信)——QPSK、OQPSK、IJF_OQPSK调制信号
  • 常用压缩文件操作函数总结
  • leetcode_274 H指数
  • 微服务框架Consul--新手入门
  • docker运行syslog-ng,搭建日志服务器