Spring管理Bean的三种方式

2023-05-16

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

主要有三种方式:BeanWrapper、BeanFactory和使用ApplicationContext

1、BeanWrapper

package com.example.demo.test;

import java.util.Date;

public class HelloWorld {

	private String msg;

	private Date date;

	public HelloWorld() {
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

}
package com.example.demo.test;

import java.util.Date;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

public class SpringTest {

	public static void main(String[] args)
			throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		Object obj = Class.forName("com.example.demo.test.HelloWorld").newInstance();
		BeanWrapper bw = new BeanWrapperImpl(obj);
		bw.setPropertyValue("msg", "hello world!");
		bw.setPropertyValue("date", new Date());
		System.out.println(bw.getPropertyValue("date") + " " + bw.getPropertyValue("msg"));
	}
}

2、BeanFactory

这个接口有多个实现,最常用的实现是XmlBeanFactory,示例如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE  beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="HelloWorld" class="com.example.demo.test.HelloWorld">
		<property name="msg">
			<value>HelloWorld</value>
		</property>
		<property name="date">
			<ref bean="date"/>
		</property>
	</bean>
	<bean id="date" class="java.util.Date"></bean>
	
</beans>
package com.example.demo.test;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class SpringTest {

	public static void main(String[] args) {
		ClassPathResource res = new ClassPathResource("config/config.xml");
		XmlBeanFactory factory = new XmlBeanFactory(res);
		HelloWorld h = (HelloWorld) factory.getBean("HelloWorld");
		System.out.println(h.getDate() + " " + h.getMsg());
	}
}

3、ApplicationContext

ApplicationContext建立在BeanFactory之上,并增加了其它功能,例如对于国际化的支持、获取资源、事件传递等。示例如下,HelloWorld.java和配置都不用改,测试代码如下

package com.example.demo.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class SpringTest {

	public static void main(String[] args) {
		ApplicationContext ac = new FileSystemXmlApplicationContext("src/config/config.xml");
		HelloWorld h = (HelloWorld) ac.getBean("HelloWorld");
		System.out.println(h.getDate() + " " + h.getMsg());
	}
}

最常用的是ApplicationContext

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring管理Bean的三种方式 的相关文章

随机推荐

  • Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的关系与区别

    唱 简单点 xff0c 理解问题的方式简单点 我不是一个演员 先贴上官方文档 xff1a Gradle https docs gradle org current userguide userguide single html Gradle
  • MoTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused

    点击右上角的 X server xff0c 然后再执行命令 xff0c 比如 打开firefox firefox 打开文件管理器 nautilus 打开文本编辑器 gedit 打开模拟时钟 xclock 打开虚拟机管理器 virt mana
  • C语言实现学生成绩管理系统

    学生管理系统 主界面 功能选择界面 所用的函数 函数名 int Num void 函数功能 得到学生人数 函数代码 得到学生人数 int Num void printf 34 请输入学生的人数 n 34 scanf 34 d 34 amp
  • 因式分解

    因式分解是数学中一种常见的计算 xff0c 也是编程中一种非常常见的编程方法 因式分解是指将一个非质数分解成几个质数的积 如 xff1a 4 61 2x2 100 61 2x2x5x5 算法代码 xff1a include lt stdio
  • RecyclerView的使用(一):基本使用

    前言 对于从事Android开发的朋友们来说 xff0c RecyclerView大家肯定都不陌生 xff0c 这是一个和listView有些相似的列表结构控件 xff0c 可以实现一些基本的列表的显示及事件内容 本期对于RecyclerV
  • 在控制台程序中播放音乐

    看过我的博客的人都知道 xff0c 在C语言中调用几个API函数就可以播放音乐了 xff0c 而我在博客中也写过Windows图形界面编程中做过一些与音乐有关的程序 xff0c 如 音乐播放器 音乐贺卡 等 xff0c 可是如果要你在控制台
  • 常用的DOS命令

    xfeff xfeff CMD命令 xff1a 开始 xff0d gt 运行 xff0d gt 键入cmd或command xff08 在命令行里可以看到系统版本 文件系统版本 xff09 1 appwiz cpl xff1a 程序和功能
  • 链表《5》使用链表实现学生成绩管理系统

    上次我使用动态数组结构体实现了学生成绩管理系统 xff1a http blog csdn net u010105970 article details 17752193 这次学习了链表对链表也有所了解 xff0c 我就想着用链表实现学生成绩
  • 得到一个数字中每一位的数字

    学习编程也有一段时间了 xff0c 随着学习的不断深入 xff0c 我越来越体会到了算法的重要性 xff0c 最近遇到了一些非常有意思的算法 xff0c 比如打印水仙花数 将数字逆置 xff0c 在这两个算法中会用到一个数字钟每一位的值 如
  • 使用C++实现学生管理系统

    我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统 xff0c 最近正好在学习C 43 43 xff0c 于是我便使用C 43 43 实现了学生成绩管理系统 xff0c 算法和前面的C语言的动态数组实现的学生成绩管理系统差
  • 制作一个简单的Android版的音乐播放器

    音乐播放器是一个非常常见的应用 xff0c 这篇博客就是介绍如何制作一个简单的音乐播放器 xff0c 这款音乐播放器具有以下的功能 xff1a 播放歌曲 暂停播放歌曲 显示歌曲的总时长 显示歌曲的当前播放时长 调节滑块可以将歌曲调节到任何时
  • 使用Less

    为什么要使用预处理CSS 在使用CSS过程中会遇到一个非常头疼的问题 xff0c 因为CSS中没有像java C 43 43 或者PHP等程序语言一样有有自己的变量 常量 条件语句以及一些编程语法 xff0c 只是一行行单纯的属性描述 xf
  • 使用Gulp

    为什么要使用Gulp 在前端开发中通常需要做 xff0c 预处理语言的编译 js文件的压缩 css文件的压缩 图片的压缩等一系列工作 xff0c 而使用Gulp可以自动化的完成这些工作 xff0c 从而提高网站的开发效率 xff0c 在我的
  • 欢迎使用CSDN-markdown编辑器

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 xff0c 用它写博客 xff0c 将会带来全新的体验哦 xff1a Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传
  • ubuntu mysql密码忘记了怎么办,ubuntu怎么查看mysql密码

    1 首先输入以下指令 xff1a sudo cat etc mysql debian cnf 运行截图如下 xff1a 2 再输入以下指令 xff1a mysql u debian sys maint p 注意 这条指令的密码输入是输入第一
  • Android中调用Ping操作及结果分析

    实现方法 android中调用ping命令需要使用Linux底层的命令 xff1a ping c 1 w 10 ip 其中参数 c 1指的是ping的次数为1 xff0c 参数 w 10指的是超时时间 xff0c 单位为秒 xff0c 超过
  • weblogic12c下载及安装

    下载地址 http www oracle com technetwork middleware weblogic downloads index html 安装步骤 xff1a 1 Extract the contents of the z
  • 休眠后电脑马上自动唤醒解决

    1 显示可唤醒的设备 powercfg devicequery wake programmable 2 显示已经设置为可以唤醒的设备 powercfg devicequery wake armed 3 休眠一下 xff0c 然后运行命令 x
  • Gradle之Wrapper详解

    转自 xff1a Gradle之Wrapper详解 简书 介绍 Wrapper xff0c 看到这个单词大家应该都不陌生 xff0c 它就是位于Android项目根目录下的gradle文件夹中的gradle wrapper properti
  • Spring管理Bean的三种方式

    随时随地阅读更多技术实战干货 xff0c 获取项目源码 学习资料 xff0c 请关注源代码社区公众号 ydmsq666 主要有三种方式 xff1a BeanWrapper BeanFactory和使用ApplicationContext 1