Spring(2)bean注入–Set方法注入

Set 方法注入

  1. 新建一个空的 maven项目。

  2. 导入依赖

    <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--这里是java 版本号--><maven.compiler.source>11</maven.compiler.source>  <maven.compiler.target>11</maven.compiler.target><!--这里是方便版本控制--><spring.version>5.3.1</spring.version><lombok.version>1.18.20</lombok.version><junit.version>4.12</junit.version>
    </properties>
    <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency>
    </dependencies>
    
  3. 工程项目结构

  4. 新建包 com.crush.pojo

  5. 新建Java类Student

    @Data // set、get 方法
    @AllArgsConstructor // 全参构造
    @NoArgsConstructor  // 无参构造
    public class Student {/*** 学号*/private Long number;/*** 学生姓名*/private String name;/*** 所在学校*/private String school;
    }
    
  6. resource 下 beans.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--第一种方式 set 方式注入1、有set方法才可以注入2、默认是单例模式 singleton--><bean id="student" class="com.crush.pojo.Student" scope="singleton"><!--值可以跟在在标签后面 也可以 写在标签内部--><property name="number"><value>1</value></property><property name="name" value="wyh"/><property name="school" value="hngy"/></bean><!--这个id 就是 applicationContext.getBean("【bean-id】", Student.class);此处id 大多数时候命名规则就是 类名的第一个字母改为小写class:Studentbean id一般就为: student--><bean id="ssss" class="com.crush.pojo.Student" scope="singleton"><!--值可以跟在在标签后面 也可以 写在标签内部--><property name="number"><value>1</value></property><property name="name" value="wyh"/><property name="school" value="hngy"/></bean>
    </beans>
    
  7. 写一个测试类

    public class Test {/*** 通过 ClassPathXmlApplicationContext 获取 Spring 应用程序的 上下文 ApplicationContext*/@org.junit.Testpublic void test(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");// 第一种方式 获取ioc 容器中的Student 强制类型转换Student student = (Student) applicationContext.getBean("student");// 第二种方式 直接在后面写明类的标签。Student student1 = applicationContext.getBean("student", Student.class);// student.setName("cccc"); 给其中一个修改 就会全部修改 可以自己打开测试下 System.out.println(student);System.out.println(student1);// 这里结果为true // 解释:因为Spring 默认构造出来的对象 默认是单例的。 无论获取多少次 ,都是单例的。System.out.println(student==student1);}/*** 通过 FileSystemXmlApplicationContext 获取 Spring 应用程序的 上下文 ApplicationContext* 还有第三种是 通过Web服务器实例化 ApplicationContext 容器*/@org.junit.Testpublic void test2(){//这里的路径 也可以 用绝对路径ApplicationContext applicationContext = new FileSystemXmlApplicationContext("src\\main\\resources\\beans.xml");Student student = applicationContext.getBean("student", Student.class);System.out.println(student);}
    }
    

小小思考

为什么 new ClassPathXmlApplicationContext(“beans.xml”); 要用ApplicationContext 来接收,而不用ClassPathXmlApplicationContext 接收呢?

 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

解释

按照面向接口编程的思想,声明变量应该是接口类型的,然后创建一个该接口的实现类的实例赋值给该变量。
ApplicationContext是接口,ClassPathXmlApplicationContext是它的一个实现类。所以你就看到了
ApplicationContext ac = new ClassPathXmlApplicationContext(…)

自言自语

带着自己的一些疑惑,来复习Spring 啦。

Spring(2)bean注入--Set方法注入相关推荐

  1. Spring官网阅读(二)(依赖注入及方法注入)

    上篇文章我们学习了官网中的1.2,1.3两小节,主要是涉及了容器,以及Spring实例化对象的一些知识.这篇文章我们继续学习Spring官网,主要是针对1.4小节,主要涉及到Spring的依赖注入.虽 ...

  2. 依赖注入_set方法注入_构造器注入

    属性注入 属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象 属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性 ...

  3. Spring--依赖注入 or 方法注入 ?

    依赖注入 我们在 Spring - 循环依赖 中谈到 Spring 的两种依赖注入方式 构造器注入 属性注入(setter注入也归属于此) @Service public class HelloSer ...

  4. Spring4.x(11)依赖注入-setter方法注入

    依赖注入-setter方法注入 通过无参构造函数+setter方法注入. 一.编写CustomerDao接口 package com.yiidian.dao; /*** * @author http: ...

  5. 2.1、spring属性注入-Set方法注入

    代码地址:spring2.1.zip - 蓝奏云文件大小:15.1 K|https://www.lanzouw.com/imlEwvptwre Set方法注入的原理是spring先通过指定id的类的无 ...

  6. Spring的Bean实例化、属性注入、对象注入、复杂注入(基于xml配置方式)

    一.Bean实例化的三种方式: (1)使用类的无参构造创建 (2)使用静态工厂创建 (3)使用实例工厂创建 代码实例: (1)项目结构: (2)在pom.xml中导入spring的核心jar包依赖: ...

  7. spring基础Bean管理基于xml注入

    1.基于xml注入属性 1.什么是Bean管理 Bean管理指的是两个操作 (1) Spring创建对象 (2) Spirng注入属性 2.Bean管理操作有两种方式 (1)基于xml配置文件方式实现 ...

  8. Spring5——(一)spingIOC(入门介绍,spring创建bean,依赖,注入,注解方式)

    为什么要有框架? (1)对于web层来说,一个大型的程序往往需要编写大量的servlet,并且取值封装会非常繁琐. (2)对于dao层,要编写大量的sql语句,对于结果的解析也很麻烦,并且sql的复用 ...

  9. spring中bean的两种注入方式

    一是依赖注入(构造方法) 二是set注入(属性的set方法) 转载于:https://www.cnblogs.com/l-x-x-y-d-j/p/11355137.html

最新文章

  1. 限制TensorFlow只在CPU上运行的方法
  2. python中isinstance用法_Python内置isinstance函数详细介绍
  3. python pca主成分_超越“经典” PCA:功能主成分分析(FPCA)应用于使用Python的时间序列...
  4. 移动Web加速技术月报第1期
  5. [Java] 蓝桥杯PREV-5 历届试题 错误票据
  6. 使用Python websockets搭建互联网服务器
  7. 极客时间和极客学院_本周极客历史:旅行者指南,光盘和旋风式操作系统
  8. pdf拆分成一页一页,详细步骤介绍
  9. 【延展Extension的基本使用 Objective-C语言】
  10. WPF 设置本地打印的纸张和方向
  11. 5G 室内融合定位白皮书
  12. SEO文章配图自动生成工具软件
  13. 微信小程序开发动感十足的加载动画--都在这里!
  14. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法
  15. FineReport报表工具最新版本细则
  16. 《并行计算》期末总结
  17. Java final关键字的使用和优点
  18. 在阿里云购买Linux服务器,配置宝塔环境,全图文,最最详细图解,保姆级教学
  19. Qt C++局域网聊天(一)
  20. GPS/IMU事后差分

热门文章

  1. CIO客观评价SAP和用友的差异
  2. MM模块部分名词解释
  3. ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示
  4. windows10商店无法下载linux,Windows 10 Store 下载极慢
  5. php函数计算加法,JavaScript_javascript实现一个数值加法函数,废话不多说,直接奉上代码 JS - phpStudy...
  6. 大学计算机测试试题,大学计算机基础 excel测试题 求答案~~喵~~
  7. cvs update 用法_WinCVS的配置与使用方法
  8. SQL语言之DQL语言学习(八)多表查询/链接查询 SQL92学习
  9. 关于fflush(stderr);
  10. python教程:ConfigParser模块使用教程