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

作者:小浪学编程 时间:2023-09-30 00:32:14 

前言

上篇博客我们介绍了如何创建一个spring项目,并且如何的存、取对象,介绍了相关方法,那么本篇博客将接着上篇博客的内容介绍如何更加简单的读取和存储对象。

🌃在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,也就是我们接下来要学习 Spring 中的相关注解,来存储和读取 Bean 对象。

一、存储Bean对象

1、之前我们存储Bean时,需要在spring-config中添加一行bean注册内容才行;如下图:

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

而现在我们需要一个简单的注解即可完成;

二、配置扫描路径

那么我们这里可以新建一个项目来演示,取名为spring-2;

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

1、首先依然是配置pom.xml文件,添加spring框架支持;

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

 添加以下代码;

<dependencies>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>5.3.24</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-beans</artifactId>
           <version>5.3.24</version>
       </dependency>
   </dependencies>

2、在resources 目录下新建一个文件,spring-config.xml;

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

添加以下配置代码;

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:content="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
   <!-- 配置 Spring 扫描的根路径(此根路径下的所有 Spring 存对象的注解才能生效) -->
   <content:component-scan base-package="com"></content:component-scan>
</beans>

注意注释里面的内容,base-package后面的路径要正确;

三、添加注解存储 Bean 对象

1、类注解:包含以下五种:@Controller(控制器)、@Service(服务)、@Repository(仓库)、@Component(组件)、@Configuration(配置)。

为什么需要五大类注解?

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

在线演示五大注解添加存储 Bean 对象;

一、Controller

首先在com包下面新建一个类,这里我取的名字是"UserController"。

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

2、UserController里面的代码;

package com;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;

@Controller
public class UserController {
   public void sayHi(){
       System.out.println("hello UserController");
   }
}

 注意千万不要遗漏注解@Controller,否则会报错的;

3、在启动类App中将对象读取出来;

ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
       UserController userController = context.getBean(UserController.class);
       userController.sayHi();

运行结果:

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

二、Service

同理,在com包下新建一个类,UserService;

UserService里代码;

package com;

import org.springframework.stereotype.Service;

@Service
public class UserService {
   public void sayHi(){
       System.out.println("hello UserService");
   }
}

启动类App读取对象;

ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
       UserService userService = context.getBean(UserService.class);
       userService.sayHi();

运行结果:

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

三、 Repository

com包下新建一个类,名为UserRepository;

UserRepository类中代码段:

package com;
import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {
   public void sayHi(){
       System.out.println("hello UserRepository");
   }
}

启动类App中代码段:

ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
       UserRepository userRepository = context.getBean(UserRepository.class);
       userRepository.sayHi();

运行结果:

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

四、Configuration

在com包下新建类,名为UserConfiguration;

UserConfiguration类中代码段:

package com;
import org.springframework.context.annotation.Configuration;
@Configuration
public class UserConfiguration {
   public void sayHi(){
       System.out.println("hello UserConfiguration");
   }
}

启动类App中代码段:

ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
       UserConfiguration userConfiguration = context.getBean(UserConfiguration.class);
       userConfiguration.sayHi();

运行结果:

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

五、Component

在com包下新建类,名为UserCompenent;

package com;
import org.springframework.stereotype.Component;
@Component
public class UserComponent {
   public void sayHi(){
       System.out.println("hello UserComponent");
   }
}

启动类App中对应代码:

ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
       UserComponent userComponent = context.getBean(UserComponent.class);
       userComponent.sayHi();

运行结果:

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

五大类注解之间有什么关系?

想搞清楚这个问题我们可以去查看一下每个注解对应的源码,直接按住Ctrl+鼠标左键即可前往对应注解的源码;

1、比如我们这里先查看一下Controller的源码;

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

进来之后我们发现Controller的实现也用到了Component;

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

2、我们再查看一下Service的源码;

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

 同样,进来之后我们发现Service的实现也用到了Component;

所以可得到以下结论: @Controller、@Service、@Repository、@Configuration 都是基于 @Component 实现的,所以@Component 可以认为是其他 4 个注解的父类。

四、Spring使用五大类注解生成beanName的问题

1、首先找到全局搜索框

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

2、点击之后输入beanname,找到红色箭头指向的类,双击打开;

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

3、打开后往下拉,找到红色框框中的方法,ctrl+鼠标左键查看源码;

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

4、可以看到beanname的命名规则;

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

🎑简单来说就是,类名中第一个字母为大写,第二个字母也为大写,那么beanname的名称就是返回"原类名",否则将首字母转换为小写作为beanname返回;

💡OK,今天的内容就到这里啦,下篇博客继续更新使用方法注解@Bean将对象更简单的存储到容器中!!

来源:https://blog.csdn.net/m0_62426532/article/details/130465331

标签:spring,读取,存储对象
0
投稿

猜你喜欢

  • SpringMVC 数据校验方法(必看篇)

    2023-11-14 21:44:05
  • C#难点逐个击破(8):可空类型System.Nullable

    2023-07-04 14:49:40
  • Spring与Spring boot的区别介绍

    2022-02-12 08:55:07
  • WebView设置WebViewClient的方法

    2023-09-01 05:34:58
  • Mybatis控制台打印Sql语句的实现代码

    2021-10-08 22:06:28
  • 详解Flutter中视频播放器插件的使用教程

    2023-06-15 23:47:31
  • Struts中使用validate()输入校验方法详解

    2023-03-02 19:10:41
  • Java swing读取txt文件实现学生考试系统

    2021-06-13 17:41:02
  • springboot集成redis并使用redis生成全局唯一索引ID

    2023-11-28 05:42:39
  • 一文带你入门SpringMVC的配置与使用

    2021-06-24 12:30:52
  • 员工管理系统java版

    2022-05-04 23:33:18
  • android studio数据存储建立SQLite数据库实现增删查改

    2023-11-29 17:11:42
  • dubbo服务链路跟踪方式

    2023-08-24 09:54:21
  • Spring gateway + Oauth2实现单点登录及详细配置

    2022-12-19 00:16:49
  • 安卓(Android)实现选择时间功能

    2023-11-05 08:20:58
  • C#如何访问共享文件夹或者磁盘

    2023-11-08 09:43:44
  • Maven build 命令介绍的使用详解

    2023-08-20 18:09:35
  • Java递归算法遍历部门代码示例

    2021-08-03 20:59:20
  • Spring JDBC的使用方法详解

    2021-12-08 14:05:42
  • 再谈异常处理try catch finally

    2021-11-12 11:17:31
  • asp之家 软件编程 m.aspxhome.com