千家信息网

Spring中bean基础知识的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"Spring中bean基础知识的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Spring中bean基础知识的示例分析"
千家信息网最后更新 2026年11月04日Spring中bean基础知识的示例分析

这篇文章主要为大家展示了"Spring中bean基础知识的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Spring中bean基础知识的示例分析"这篇文章吧。

Bean:

  • 在Spring技术中是基于组件的

  • 最基本了是最常用的单元

  • 其实实例保存在Spring的容器当中

Bean通常被定义在配置文件当中,Bean实例化由Spring的Ioc容器进行管理,Bean的实例可以通过Beanfactory进行访问,实际上大部分J2EE应用,Bean是通过ApplicationContext来访问的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory强大许多

在前面得博客依赖注入与控制反转中演示了应用spring实现ioc,在ApplicationContext.xml中有bean的配置,里面只是bean简单的应用。这篇主要是进一步学习使用bean。

一、定义

上面的代码是之前博客配置的,可以看到bean的基本构成。 是Sring配置文件的根节点,一个节点里面可以有多个节点。在bean中常用两个属性:ID,Class. ID是一唯一标识,来确定是哪个bean,可以让其他bean中使用id引用。class用来指定是哪个class。同时还可以设置scope属性,scope有两种:singleton,non-singelton。singleton:单实例模式(默认,构造方法为private),整个Spring的容器中只有一个共享实例存在(singleton)。non-singelton:每次请求该bean,Spring容器都会新建立一个bean实例,然后返回给程序(request,session,prototype)。

二、创建

Bean的命名机制

id 当在Spring的窗口当中,查找某个Bean对象时,首先根据id进行查找,将其余作为Bean的默认名称,如果ID属性不存在,则根据Name属性进行查找(将其中的第一个名称作为默认的名称),如果ID和NAME都不存在根据类的名称进行查找。id---------->name--------------->类名。

Bean的别名:可以使用alias来为bean指定别名.

下面的配置文件还是在上面的xml基础上修改的。这里配置了ID为ServiceImpl的bean设置了别名。我们可以使用它的name、id、alias来获取service。

package Cuiyw.SpringAop;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import Cuiyw.Spring.IService.IService;public class App { public static void main( String[] args ) { ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml"}); BeanFactory factory=context; IService service=(IService)factory.getBean("ServiceA1"); service.service("Cuiyw ServiceA1");  service=(IService)factory.getBean("ServiceA"); service.service("Cuiyw ServiceA");  service=(IService)factory.getBean("ServiceImpl"); service.service("Cuiyw ServiceImpl");  }}


三、注入

1.基本类型和string

可以使用value元素来设置,在上面的代码基础上稍作修改

package Cuiyw.Spring.Service;import Cuiyw.Spring.IDao.IDao;import Cuiyw.Spring.IService.IService;public class ServiceImpl implements IService{ private IDao dao; private int baseProperty; public IDao getDao() {  return dao; } public void setDao(IDao dao) {  this.dao = dao; } public void service(String name) {  System.out.println(dao.sayHello(name)+" baseProperty:"+getBaseProperty()); } public int getBaseProperty() {  return baseProperty; } public void setBaseProperty(int baseProperty) {  this.baseProperty = baseProperty; }}


对于string类型,XML解析器以String类型解析出数据,如果属性不是String类型,属性值会通过PropertyEditors转换为其他类型,比如时间类型.

2.注入bean

上面的代码中就注入了bean,在ServiceImpl中注入DaoImpl。可以使用ref来进行配置。

3.注入集合

常见的集合有list、map、set、property等,下面的代码是在ServiceImpl中定义了几个属性,然后在上下文中通过属性注入进去。为了测试,在DaoImpl中也增加了一个属性s。

package Cuiyw.Spring.Dao;import java.util.Calendar;import Cuiyw.Spring.IDao.IDao;public class DaoImpl implements IDao{ public String s; public String getS() {  return s; } public void setS(String s) {  this.s = s; } public String sayHello(String name) {  int hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);  if(hour<6) return "凌晨早,"+name;  if(hour<12)return "早上好,"+name;  if(hour<13)return "中午好,"+name;  if(hour<18)return "下午好,"+name;  return "晚上好,"+name+", s="+s;    } }
package Cuiyw.Spring.Service;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import Cuiyw.Spring.IDao.IDao;import Cuiyw.Spring.IService.IService;public class ServiceImpl implements IService{ private IDao dao; private int baseProperty; private List lists; private Set sets; private Map maps; private Properties pros; public IDao getDao() {  return dao; } public void setDao(IDao dao) {  this.dao = dao; } public void service(String name) {  System.out.println(dao.sayHello(name)+",baseProperty:"+getBaseProperty());  for(int i=0;i getLists() {  return lists; } public void setLists(List lists) {  this.lists = lists; } public Set getSets() {  return sets; } public void setSets(Set sets) {  this.sets = sets; } public Map getMaps() {  return maps; } public void setMaps(Map maps) {  this.maps = maps; } public Properties getPros() {  return pros; } public void setPros(Properties pros) {  this.pros = pros; }}

主要是注入的配置,在list、map、set属性中都是配置了一个基础类型value=1,两个DaoImpl类型。

          1                       1                                                   prokeyA   prokeyB   

执行main方法可以看到属性都注入进去了。

4.自定义属性编辑器

对于有一些属性是没法注入的,此时就需要自定义,比如上面说的日期类型。

首先是要定义一个继承PropertyEditorSupport的类,重写setAsText方法。

package Cuiyw.Spring.Service;import java.beans.PropertyEditorSupport;import java.text.ParseException;import java.text.SimpleDateFormat;public class CustomerProperty extends PropertyEditorSupport { private String format="yyyy-MM-dd"; public String getFormat() {  return format; } public void setFormat(String format) {  this.format = format; } @Override public void setAsText(String text) throws IllegalArgumentException {  // TODO Auto-generated method stub  SimpleDateFormat sdf=new SimpleDateFormat(format);  //super.setAsText(text);  try {   //转换对象,能过setValue方法重新赋值   this.setValue(sdf.parse(text));  } catch (ParseException e) {   e.printStackTrace();  } }}

然后在配置文件配置这个类

     

这里还是在ServiceImpl中增加了一个java.util.Date类型的date属性。并在配置文件注入值。

以上是"Spring中bean基础知识的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

属性 配置 类型 基础 实例 面的 文件 知识 代码 名称 容器 方法 基础知识 示例 分析 内容 别名 篇文章 节点 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 深圳九邦互联网科技有限公司 互联网科技公司经营范围 科技创新与互联网经济 互联网金融科技创新 狮子座互联网科技培训 互联网科技公司有哪些 互联网 科技服务平台 恒生科技互联网指数分析 互联网科技中介 互联网软件和科技 崇明区互联网教育科技诚信经营 互联网5g黑科技有哪些 注册互联网科技公司经营范围大全 洛阳昕诺飞互联网科技有限公司 广西互联网科技孵化中心 互联网科技融合创新 山东大美朱楼互联网科技有限公司 恒生科技互联网指数十大成分股 互联网 科技节活动 微视频大赛 伟宏互联网科技 科技互联网产品 互联网科技logo设计 菲比寻常互联网科技 深圳艾佳互联网科技 中国的互联网科技企业的崛起 厦门比较好的科技互联网公司 启辰互联网科技 工业互联网科技成果转化 易企秀互联网科技是做什么的
0