Java Spring读取和存储详细操作

目录
  • 前言
  • 存储bean对象
    • 1.创建项目
    • 2.添加注解将bean存入到容器中
      • 2.2 Service
      • 2.3 Repository
      • 2.4 Configuration
      • 2.5 Component
      • 2.6 为什么会有5大类注解
      • 2.7 id为什么默认是小驼峰
      • 2.8使用bean注解
  • 获取bean对象
    • 1.属性注入
      • 1.1 Autowired
      • 1.2Resource
      • 1.3二者区别
    • 2.构造方法注入
  • Setter注入
  • 经典面试题

前言

但在操作的过程中我们发现读取和存储对象并没有想象中的那么“简单”,所以接下来我们要学习更加简单的操作 Bean 对象的⽅法。

存储bean对象

之前我们存储bean对象时,需要在配置文件中加入一行bean才能进行注入

这种注入方式并不好,如果配置文件出了错,程序是不会显示错误信息的。这对初学者来说很不友好。

1.创建项目

创建启动类和main方法

引入依赖

<dependencies>
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
</dependencies>

创建配置文件

我们约定好创建的bean对象放在com.bean包下:

<dependencies>
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
</dependencies>

2.添加注解将bean存入到容器中

使用Spring的核心就是使用注解,我们学习的注解有5个

@Controller 【控制器】@Service 【服务】@Repository 【仓库】@Configuration 【配置/布局】@Component 【组件】 2.1 controller

我们之前能够通过传入id参数来获取对象,但那是加了一行bean手动加入的id,但现在我们使用了注解,难道就只能使用类类型来获取吗?

我们使用注解注入bean对象时,id其实默认是类名的小驼峰形式:

原因先不解释,后面会说。

容易犯的错:
我们之前在配置文件中加入了bean对象查找的根目录,意味着会从这个目录开始向下搜索,但不会向上:

下级目录

上级目录

2.2 Service

2.3 Repository

2.4 Configuration

2.5 Component

2.6 为什么会有5大类注解

在公司中每个人负责的领域不同,因此使用的类注解也是不同的,但五大类注解本质都是一样的。

我们通过两个类注解就能清楚的看到,其他四个注解都是引入了Component注解的方法,也就是说Component是其他四个类注解的父亲。那么Component是干嘛的呢?就是不好分到其他四个类注解时丢给它的~

2.7 id为什么默认是小驼峰

们使用全局搜索:

查找AnnotationBeanNameGenerator:

测试:

2.8使用bean注解

bean注解是一个方法注解,当对一个方法使用时,返回的对象也会被Spring注入,但需要配合五大类注解使用(任意一个都行)

id就是方法名。

2.8.1 bean重命名

2.8.2重命名多个

注意:当使用name属性重命名后,原本的方法名将失去作用,也就是说只能使用那么修改后的名字作为id了。

获取bean对象

获取bean对象也叫对象注入,其有以下3种方法:

  • 属性注入
  • 构造方法注入
  • Setter注入

1.属性注入

1.1 Autowired

虽然现在看起来没什么问题,但是当我们对同一类型的对象进行了多次注入:

此时就需要精准定位所选择的对象了,需要类型+名字:

1.2Resource

1.3二者区别

Resource有个name 属性,可以指定注入bean的名称

但Autowired也有个搭配注解,@Qualifier,一样可以指定选择的bean对象,所以二者之间嘛,我觉得打成平手

ps:Autowired注解一开始是要进行查询所有类型为所需注入的对象的类型,但Autowired一次只能注入一个对象,因此当统一类型的对象注入多次后会报错。而Qualifier注解本质上是对其所查询的结果进行筛选。

2.构造方法注入

还是使用Autowired注解:

ps:当只有一个构造方法时,Autowired可以省略

但当有两个以上时不能省略

Setter注入

还是通过Autowired

Resource也支持Setter注入。

经典面试题

属性注入、构造方法注入、Setter注入有什么区别?

到此这篇关于Spring读取和存储详细操作的文章就介绍到这了,更多相关Spring读取和存储内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java Spring框架创建项目与Bean的存储与读取详解

    目录 1.Spring项目的创建 1.1创建Maven项目 1.2添加spring依赖 1.3创建启动类 1.4配置国内源 2.储存或读取Bean对象 2.1添加spring配置文件 2.2创建Bean对象 2.3读取Bean对象 本文思维导图: 1.Spring项目的创建 1.1创建Maven项目 第一步,创建Maven项目,Spring也是基于Maven的. 1.2添加spring依赖 第二步,在Maven项目中添加Spring的支持(spring-context, spring-beans

  • Spring如何通过注解存储和读取对象详解

    目录 1. 创建Spring 项目 1.1 创建⼀个 Maven 项⽬ 1.2 添加 Spring 框架支持 1.3 添加启动类 2. 存储 Bean 对象 2.1 创建Bean 2.2 配置 spring-config.xml 3. 获取并使用 Bean 对象 3.1 创建Sprign 上下文 3.2  获取指定的 Bean 对象 3.3 使用Bean 4.总结 5.配置扫描路径 6.添加注解存储 6.1 @Controller(控制器存储) 6.2 @Service (服务器存储) 6.3

  • Java Spring读取和存储详细操作

    目录 前言 存储bean对象 1.创建项目 2.添加注解将bean存入到容器中 2.2 Service 2.3 Repository 2.4 Configuration 2.5 Component 2.6 为什么会有5大类注解 2.7 id为什么默认是小驼峰 2.8使用bean注解 获取bean对象 1.属性注入 1.1 Autowired 1.2Resource 1.3二者区别 2.构造方法注入 Setter注入 经典面试题 前言 但在操作的过程中我们发现读取和存储对象并没有想象中的那么“简单

  • Java Spring项目国际化(i18n)详细方法与实例

    Spring国际化概述 国际化基本规则 国际化信息"也称为"本地化信息",一般需要两个条件才可以确定一个特定类型的本地化信息,它们分别是"语言类型"和"国家/地区的类型".如中文本地化信息既有中国大陆地区的中文,又有中国台湾.中国香港地区的中文,还有新加坡地区的中文.Java通过java.util.Locale类表示一个本地化对象,它允许通过语言参数和国家/地区参数创建一个确定的本地化对象. 语言参数使用ISO标准语言代码表示,这些代码

  • Java Spring @Autowired的这些骚操作,你都知道吗

    目录 前言 1. @Autowired的默认装配 2. 相同类型的对象不只一个时 3. @Qualifier和@Primary 4. @Autowired的使用范围 4.1 成员变量 4.2 构造器 4.3 方法 4.4 参数 4.5 注解 5. @Autowired的高端玩法 6. @Autowired一定能装配成功? 6.1 没有加@Service注解 6.2 注入Filter或Listener 6.3 注解未被@ComponentScan扫描 6.4 循环依赖问题 7. @Autowire

  • java Spring整合Freemarker的详细步骤

    我的開發環境框架:springmvc開發工具:springsource-tool-suite-2.9.0版本:1.6.0_29tomcat版本:apache-tomcat-7.0.26前言:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等.簡而言之,Freemarker就是在Jave Web開發

  • java 实现读取clob

    1.说明 jdbc 数据类型为Clob,与java的String类型相对应. 2.导入 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList;

  • java spring整合junit操作(有详细的分析过程)

    此博客解决了什么问题: 解决测试的时候代码冗余的问题,解决了测试工程师的编码能力可能没有开发工程师编码能力的问题,解决了junit单元测试和spring注解相结合! 测试类代码:(只给大家展示测试类的代码) public class AccountServiceTest { @Test public void testFindAll(){ //1.获取容器 ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml&quo

  • Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍

    Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍 一.基本环境: mongdb3.0.5数据库 spring-data-MongoDB-1.7.2.jar mongo-Java-driver-3.0.2.jar Linux-redhat6.3 tomcat7 二.搭建mongodb副本集: 1.  分别在三台linux系统机上安装mongodb,(为避免和机器上原有的mongodb端口冲突,这里设为57017): 192.168.0.160 192.168.0.

  • java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个读取和字节数组读取,字符读取同样之,字符读取适合文本读取,字节读取皆可以 这里直接上代码,读取文件的9个小demo package com.io; import org.junit.Test; import java.io.*; public class FileTest { //1.字节流字节一个

  • 详细解读Java Spring AOP

    一.对AOP的初印象 首先先给出一段比较专业的术语(来自百度): 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 然后我们举一个比较容易理解的例

随机推荐