千家信息网

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

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要为大家展示了"Spring中bean基础知识的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Spring中bean基础知识的示例分析"
千家信息网最后更新 2025年11月16日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安全错误 数据库的锁怎样保障安全 涪陵区企业网络技术服务活动 数据库设计有什么好的工具 金山区信息软件开发定制报价表 大地之怒服务器 冒险岛2服务器明珠港 学校网络安全应急演练情况 互联网科技基金还能持有吗 nosql数据库比较 帆软数据库条件查询 福建常见软件开发代理价钱 数据库常用的保护方法 mysql数据库知识大全 全球服务器运维大会 论文检索数据库是什么 emby安卓怎么添加服务器 网络安全上升至国家层面 互联网金融的相关科技情况 重庆数据网络技术分类标准 钱有路 服务器错误 西南民族大学数据库IP是多少 方舟服务器怎么设置重生时间 网络安全方面人才缺口 网络安全和支付安全 学校网络安全应急演练情况 财产安全的网络安全 体育生可以报软件开发专业吗 电竞酒店的服务器二手价格 如何进入别人网页数据库 服务器管理的内网不通 数据外包网络安全法
0