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

 更新时间:2023年06月02日 10:50:51   作者:小浪学编程  
这篇文章主要给大家介绍了关于Spring如何更简单的读取和存储对象的相关资料,在Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,文中通过图文介绍的非常详细,需要的朋友可以参考下

前言

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

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

一、存储Bean对象

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

2999347187d74d918482ae57d3cca963.png

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

二、配置扫描路径

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

4502c035d21d4a97a6a87c064df30011.png

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

f39391671b8645c6a96dafd40a0c9584.png

 添加以下代码;

    <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;

b3c1c2ca579d40cd8209ba5af82a46ae.png

添加以下配置代码;

<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(配置)。

为什么需要五大类注解?

d8ff6dd2da8f478790c8d7e4e26ff811.png

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

一、Controller

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

67c3f691449e4107a35ff4908f1c279b.png

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();

运行结果:

35993469122346cdb84b631992e72d71.png

二、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();

运行结果:

7933d25a63d14e69a650cb4dad0ee565.png

三、 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();

运行结果:

0b365d05ab554575be1ad23f3a2f235f.png

四、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();

运行结果:

acaa2cc86ebb42238aa874d99e3b63d9.png

五、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();

运行结果:

20042da5a70443c283fd1e01e0e571d0.png

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

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

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

d2f12f36b7d64d08b289b938c50b01ae.png

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

a04023eca791404b81c7e2746b843b47.png

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

2b0a7e618d5b40e0bc3a01058208849d.png

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

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

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

1、首先找到全局搜索框

f46bc49993784e69b401d8efd322b67a.png

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

60a32c4c005e4f9ab0fc11aafbac0ad7.png

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

29e8cc094af64ad59083a16d3eff1389.png

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

12eaddaff4c94eab944a01a2312a1436.png

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

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

总结

到此这篇关于Spring如何更简单的读取和存储对象的文章就介绍到这了,更多相关Spring读取和存储对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot排除某些自动配置的操作方法

    springboot排除某些自动配置的操作方法

    Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用Spring Boot 某些类的自动化配置了,本文给大家介绍springboot排除某些自动配置的方法,感兴趣的朋友一起看看吧
    2023-08-08
  • Java为什么占用四个字节你知道吗

    Java为什么占用四个字节你知道吗

    这篇文章主要介绍了Java为什么占四个字节,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Mybatis的dao层,service层的封装方式

    Mybatis的dao层,service层的封装方式

    这篇文章主要介绍了Mybatis的dao层,service层的封装方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • servlet监听器的学习使用(三)

    servlet监听器的学习使用(三)

    这篇文章主要为大家详细介绍了servlet监听器学习使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 如何在java中使用Jython

    如何在java中使用Jython

    这篇文章主要介绍了如何在java中使用Jython,由于项目中需要用到Java调用Python的脚本,来实现一些功能,就对jython做了一些了解,通过jython可以实现java对python脚本的调用,需要的朋友可以参考一下
    2022-03-03
  • Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    这篇文章主要介绍了Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • mybatis一对多两种mapper写法实例

    mybatis一对多两种mapper写法实例

    这篇文章主要介绍了mybatis一对多两种mapper写法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java 23种设计模型详解

    Java 23种设计模型详解

    本文主要介绍Java 23种设计模型,这里整理了详细的资料,及实现各种设计模型的示例代码,有需要的小伙伴可以参考下
    2016-09-09
  • Servlet会话技术基础解析

    Servlet会话技术基础解析

    这篇文章主要介绍了Servlet会话技术基础解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Springboot jdbctemplate整合实现步骤解析

    Springboot jdbctemplate整合实现步骤解析

    这篇文章主要介绍了Springboot jdbctemplate整合实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论