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

 更新时间:2023年07月18日 11:00:31   作者:摸鱼王胖嘟嘟  
这篇文章主要为大家详细介绍了Spring中如何更简单的实现读取和存储对象,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

前置工作

在spring-config.xml添加如下配置:配置bean的扫描根路径:只有当前目录下的类才会扫描是否添加了注解,如果添加了注解,就将这些加了注解的类,存放到IoC容器中。

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <content:component-scan base-package="com.java.demo">
    </content:component-scan>
</beans>

更加简单的存储Bean对象

两种方法:

1.通过类注解实现Bean对象的存储;

  • @Controller:控制器,验证用户请求的数据正确性(安保系统)
  • @Service:服务层,编排和调度具体执行方法的(客服中心)
  • @Repository:持久层,和数据库进行交互,等同于DAO(Data Access Object) 数据访问层
  • @Component:组件(工具类)
  • @Configuration:配置项(配置项目中的一些配置)

2.通过方法注解实现Bean对象的存储

@Bean路径

使用@Controller(控制器存储)

package com.java.demo;
import org.springframework.stereotype.Controller;
@Controller(value = "userinfo")
public class User {
    public void sayHi() {
        System.out.println("Hi,User~");
    }
}
import com.java.demo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 对象
        User user = context.getBean("userinfo", User.class);
        // 3. 使用 Bean 对象
        user.sayHi();
    }
}

import com.java.demo.Student;
import com.java.demo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 对象
//        User user = context.getBean("userinfo", User.class);
        Student student = context.getBean("student", Student.class);
        // 3. 使用 Bean 对象
//        user.sayHi();
        student.sayHi();
    }
}

原因就是:student没有加注解。

使用注解和XML是可以一起使用的。

类注解存储Bean命名问题

默认类名首字母小写就能获取到Bean对象。

获取不到Bean对象

使用原类名,可以获取到Bean对象

我们在获取Bean对象时,传入名称时,一般分为两种情况:

默认情况下:使用原类名首字母小写就能读取到Bean对象

特殊情况:如果不满足首字母大写和第二个字母小写的情况,那么使用原类名获取

Java项目标准分层

五大类注解之间的关系

方法注解@Bean

a.使用注意事项:@Bean 注解 必须要配合五大类注解一起使用

package com.java.demo.model;
import java.time.LocalDateTime;
@SuppressWarnings({"all"})
/**
 * 普通的文章实体类
 */
public class ArticleInfo {
    private int aid;
    private String title;
    private String content;
    private LocalDateTime createtime;
    public int getAid() {
        return aid;
    }
    public void setAid(int aid) {
        this.aid = aid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public LocalDateTime getCreatetime() {
        return createtime;
    }
    public void setCreatetime(LocalDateTime createtime) {
        this.createtime = createtime;
    }
    @Override
    public String toString() {
        return "ArticleInfo{" +
                "aid=" + aid +
                ", title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", createtime=" + createtime +
                '}';
    }
}
package com.java.demo;
import com.java.demo.model.ArticleInfo;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import java.time.LocalDateTime;
@SuppressWarnings({"all"})
@Controller
public class Articles {
    @Bean // 将当前方法返回的对象存储到 IoC 容器
    public ArticleInfo articleInfo() {
        // 伪代码
        ArticleInfo articleInfo = new ArticleInfo();
        articleInfo.setAid(1);
        articleInfo.setTitle("今天周几?");
        articleInfo.setContent("今天周一!");
        articleInfo.setCreatetime(LocalDateTime.now());
        return articleInfo;
    }
}
import com.java.demo.UConfig;
import com.java.demo.example.Teacher;
import com.java.demo.model.ArticleInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 对象
//        User user = context.getBean("userinfo", User.class);
//        Student student = context.getBean("student", Student.class);
//        UserService userService = context.getBean("userService",UserService.class);
//        Teacher teacher = context.getBean("teacher",Teacher.class);
//        UConfig uConfig = context.getBean("UConfig",UConfig.class);
        ArticleInfo articleInfo = context.getBean("articleInfo", ArticleInfo.class);
        // 3. 使用 Bean 对象
//        user.sayHi();
//        student.sayHi();
//        userService.sayHi();
//        teacher.sayHi();
//        uConfig.sayHi();
        System.out.println(articleInfo);
    }
}

b.@Bean 获取时注意事项:@Bean的默认命名=方法名。

重命名@Bean的几种方式

方式1:@Bean("aaa")

方法2:@Bean(name = "aaa")

方式3:@Bean(value = "aaa")

重命名扩展:@Bean 支持指定多个名称@Bean(value = {“aaa”})默认命名注意事项:当@Bean重命名之后,那么默认的使用方法名获取Bean对象的方式就不能使用了。

以上就是详解Spring如何更简单的读取和存储对象的详细内容,更多关于Spring读取存储对象的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis-plus sql注入及防止sql注入详解

    Mybatis-plus sql注入及防止sql注入详解

    mybatis-plus提供了许多默认单表 CRUD 语句,对于其他SQL情况爱莫能助,下面这篇文章主要给大家介绍了关于Mybatis-plus sql注入及防止sql注入的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • SpringBoot Logback日志记录到数据库的实现方法

    SpringBoot Logback日志记录到数据库的实现方法

    这篇文章主要介绍了SpringBoot Logback日志记录到数据库的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Springboot工程中使用filter过程解析

    Springboot工程中使用filter过程解析

    这篇文章主要介绍了springboot工程中使用filter过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java题解leetcode242.有效的字母异位词

    java题解leetcode242.有效的字母异位词

    这篇文章主要为大家介绍了java题解leetcode242.有效的字母异位词方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • java 中ThreadLocal 的正确用法

    java 中ThreadLocal 的正确用法

    这篇文章主要介绍了java 中ThreadLocal 的正确用法的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java计算代码段执行时间的详细过程

    Java计算代码段执行时间的详细过程

    java里计算代码段执行时间可以有两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算,这篇文章主要介绍了java计算代码段执行时间,需要的朋友可以参考下
    2023-02-02
  • Java前后端的JSON传输方式(前后端JSON格式转换)

    Java前后端的JSON传输方式(前后端JSON格式转换)

    这篇文章主要介绍了Java前后端的JSON传输方式(前后端JSON格式转换),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • springboot配置druid连接池的方法示例

    springboot配置druid连接池的方法示例

    这篇文章主要介绍了springboot配置druid连接池的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Java单例模式与破坏单例模式概念原理深入讲解

    Java单例模式与破坏单例模式概念原理深入讲解

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建
    2023-02-02
  • Spring Boot整合Log4j2.xml的问题及解决方法

    Spring Boot整合Log4j2.xml的问题及解决方法

    这篇文章主要介绍了Spring Boot整合Log4j2.xml的问题,本文给大家分享解决方案,需要的朋友可以参考下
    2023-09-09

最新评论