java spring IOC外部Bean注入

news/2024/11/27 20:38:36/

外部Bean注入也是一种Bean操作的属性注入 但这次我们要注入的是一个类对象

我们先创建spring项目 引入基本依赖

然后在src下创建两个包 gettingStarted 和 generate 这个名字可以随便取 但和我同名 可以让你们不会出现 名称不一样导致资源找不到的问题

然后在
gettingStarted包下创建一个 类 一个 接口
InterfaceUser 接口 参考代码如下

package gettingStarted;public interface InterfaceUser {public void setName(String name);public String getName();public void setAge(int age);public int getAge();
}

这就是一个很普通的接口 里面定义了四个抽象方法

分别是两个属性 (name age) 的get和set方法

user类 参考代码如下

package gettingStarted;public class user implements InterfaceUser {public String name = "小裴";public int age = 13;public void setName(String name){this.name = name;}public String getName(){return name;}public void setAge(int age){this.age = age;}public int getAge(){return age;}
}

user类实现了InterfaceUser接口 重写了 这几个抽象的方法 并定义了两个值 name 和 age

然后在generate包下创建 organization类 参考代码如下

package generate;import gettingStarted.InterfaceUser;public class organization {public InterfaceUser User;public void setUser(InterfaceUser User){this.User = User;}public InterfaceUser getUser() { return this.User; }public void verifyOutput() {System.out.println(User.getName());System.out.println(User.getAge());}
}

这里 我们定义了一个InterfaceUser对象类型的变量(User) InterfaceUser 就是之前我们定义的 InterfaceUser 接口 我们需要一个这样的对象

然后声明了这个 InterfaceUser 对象的set方法
然后 verifyOutput方法 就调用了InterfaceUser中的两个get方法 获取值

然后 我们在src下创建 bean.xml
参考代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"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"><!-- user类的对象创建 --><bean id = "user" class = "gettingStarted.user"></bean><bean id = "organization" class = "generate.organization"><property name="User" ref="user"></property></bean>
</beans>

这里 我们定义了organization类的对象时 直接 通过property给他的set复制 name User 代表指向类中的 User变量的set方法 然后 这个ref指向了user 就是我们第一个定义的bean创建了gettingStarted.user的对象 然后将这个对象 给了ref

简单说 就是 organization 接受一个InterfaceUser对象 xml 创建了gettingStarted.user的对象 然后将这个对象给到organization 中User的set方法 这时 organization 的 User就接到了一个 InterfaceUser实现为user类的对象

然后我们在src下创建 text
代码如下

import generate.organization;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class text {public static void main(String args[]) {//获取配置文件ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");organization organization = context.getBean("organization", organization.class);organization.verifyOutput();}
}

我们读取了 bean.xml的配置 然后通过反射创建对象 然后通过organization对象调用里面的verifyOutput方法
运行结果如下
在这里插入图片描述
这就是外部Bean注入 简单说就是注入一个类对象


http://www.ppmy.cn/news/18619.html

相关文章

文件操作详解-IO

目录 1.认识文件 2.文件的类型 3.java对文件的操作 针对文件系统操作 针对文件内容操作 字节流 字符流 字节流的使用 字符流的使用 4.文件IO小程序练习 示例1 示例2 1.认识文件 狭义的文件指的是硬盘上的文件和目录 广义的文件泛指计算机中的很多的软硬件资源,操…

图的最短路径

文章目录最短路径Dijkstra算法邻接表邻接矩阵Bellman-Ford算法邻接表邻接矩阵Floyd-Warshall算法邻接表邻接矩阵源代码邻接表邻接矩阵最短路径 概念 从在带权有向图G中的某一顶点出发, 找出一条通往另一顶点的最短路径, 最短也就是沿路径各边的权值总和达到最小. 分类 单源…

尚硅谷-分布式锁

分布式锁 在应用开发中&#xff0c;特别是web工程开发&#xff0c;通常都是并发编程&#xff0c;不是多进程就是多线程。这种场景下极易出现线程并发性安全问题&#xff0c;此时不得不使用锁来解决问题。在多线程高并发场景下&#xff0c;为了保证资源的线程安全问题&#xff…

Tkinter的Label与Button

Tkinter是Python的一个内置包&#xff0c;主要用于简单的界面设计&#xff0c;使用起来非常方便。 目录 一、创建界面 1. 具体步骤 1.1 导入tkinter包 1.2 tk.Tk()函数&#xff1a;创建一个主界面&#xff0c;并命名为root 1.3 root.title()函数&#xff1a;给root界面设置…

行人属性识别研究综述(二)

文章目录6 PAR&#xff08;行人属性识别&#xff09;算法综述6.1全局基于图像的模型6.1.1 ACN (iccvw-2015)6.1.2 DeepSAR and DeepMAR (ACPR-2015) [6]6.1.3 MTCNN (TMM-2015) [7]6.2 基于部件的模型6.2.1 Poselets (ICCV-2011)6.2.2 rad (iccv-2013)6.2.3 PANDA (cvp -2014) …

「链表」简析

前言 前言&#xff1a;研究一个数据结构的时候&#xff0c;首先讲的是增删改查。 文章目录前言一、链表简介1. 含义2. 节点组成3. 存储方式1&#xff09;数据在内存中的存储方式2&#xff09;单链表在内存中的存储方式3&#xff09;双链表在内存中的存储方式4&#xff09;循环链…

【论文翻译】End-to-End Human Pose and Mesh Reconstruction with Transformers

【cvpr论文】End-to-End Human Pose and Mesh Reconstruction with Transformers (thecvf.com) 【github】microsoft/MeshTransformer: Research code for CVPR 2021 paper "End-to-End Human Pose and Mesh Reconstruction with Transformers" (github.com) 摘要 我…

DPU网络开发SDK——DPDK(十二)

rte_bus_probe()->pci_probe_all_drivers()->rte_pci_probe_one_driver()->eth_ixgbe_pci_probe() 继续分析rte_pci_probe_one_driver()的实现&#xff0c;接下来调用与设备匹配的驱动的probe方法&#xff0c;此处以ixgbe设备的驱动为例&#xff0c;其probe方法为eth…