iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring中实例化bean的方式有哪些
  • 336
分享到

Spring中实例化bean的方式有哪些

2023-05-30 16:05:37 336人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“spring中实例化bean的方式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring中实例化bean的方式有哪些”这篇文章吧。前言在介绍Bean的实例化的

这篇文章主要为大家展示了“spring中实例化bean的方式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring中实例化bean的方式有哪些”这篇文章吧。

前言

在介绍Bean的实例化的方式之前,我们首先需要介绍一下什么是Bean,以及Bean的配置方式。

如果把Spring看作一个大型工厂,那么Spring容器中的Bean就是该工厂的产品。要想使用Spring工厂生产和管理Bean,就需要在配置文件中指明需要哪些Bean,以及需要使用何种方式将这些Bean装配到一起。

Spring容器支持两种格式的配置文件,分别为Properties文件格式和xml文件格式,而在实际的开发当中,最常使用的额是xml文件格式,因此在如下的讲解中,我们以xml文件格式的配置方式进行说明。XML配置文件的根元素是<beans>,其可以包含多个子元素<bean>,每个子元素定义一个Bean,并描述了Bean该如何被装配到Spring容器中。<bean>元素中的属性如下:

  • id:Bean的唯一标识符,Spring对Bean的配置、管理都通过该属性来完成;

  • name:Spring同样可以通过name对Bean进行配置和管理,name属性可以为Bean定义多个名称,每个名称以逗号隔开;

  • class:该属性指定了Bean的具体实现类,必须是一个完成的类名,使用类的全限定名;

  • scope:设定Bean实例的作用域,其属性有singleton(单例)、prototype(原型)、request、session、和global Session,默认值为singleton,该属性会在下一篇博客中详细讲解;

  • constructor-arg:<bean>元素的子元素,可以使用此元素传入构造参数进行实例化(上一篇博客的最后补充就是使用此属性进行实例化的),该元素的index属性指定构造参数的序号(从0开始);

  • property:<bean>元素的子元素,通过调用Bean实例中的setter方法完成属性赋值,从而完成依赖注入;

  • ref:property、constructor-arg等元素的子元素,该元素中的bean属性用于指定对Bean工厂中某个Bean实例的引用;

  • value:property、constructor-arg等元素的子元素,用来直接指定一个常量值;

  • list:用于封装List或数组类型的依赖注入;

  • set:用于封装Set或数组类型的依赖注入;

  • map:用于封装Map或数组类型的依赖注入;

  • entry:map元素的子元素,用于设定一个键值对,其key属性指定字符串类型的键值,ref或value子元素指定其值。

在配置文件中,通常一个普通的Bean只需要定义id和class两个属性即可,定义Bean的方式如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"    "Http://www.springframework.org/dtd/spring-beans.dtd"><beans>    <!-- 将指定对象配置给spring,让spring创建其实例 -->    <bean id="userDao" class="com.ioc.UserDaoImpl"/>    <bean name="userDao1, userDao2" class="com.ioc.UserDaoImpl2"/></beans>

上述代码中,分别使用id和name属性定义了两个Bean,并使用class元素指定其对应的实现类,如果未指定id和name,则Spring会将class值当做id使用。

Spring实例化bean的四种方式

本文主要介绍四种实例化bean的方式(注入方式) 或者叫依赖对象实例化的四种方式。上面的程序,创建bean 对象,用的是什么方法 ,用的是构造函数的方式 (Spring 可以在构造函数私有化的情况下把类对象创建出来)

常用的创建方式有以下四种:

1) setter 方法

2) 构造函数

3) 静态工厂

4) 实例工厂

一、用 setter 方式

public interface IUserDao {    void addUser();    void delUser();    void updateUser();   }   public class UserDaoImpl implements IUserDao {    public void addUser() {     System.out.println("addUser方法被调用了");    }      public void delUser() {     System.out.println("delUser方法被调用了");    }      public void updateUser() {     System.out.println("updateUser方法被调用了");    }   }   public class UserAction {     private IUserDao dao; //dao是一个依赖对象,要由springg进行管理,要生成 get set 方法       public void execute(){       dao.addUser();       dao.updateUser();       dao.delUser();     }    }
//配置文件<bean name="userAction_name" class="cat.action.UserAction" ><property name="dao" ref="userDao_name" /> //引用的是下面的名称</bean> <bean name="userDao_name" class="cat.dao.UserDaoImpl" />
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

二、构造函数

public class UserAction {  //public UserAction(){} 可以保保留一个无参的构造函数   //这是几个依赖对象,不用生成get set方法了  private UserInfo user;  private String school;  private IUserDao dao;    //希望Spring 由构造函数注入依赖对象  public UserAction(IUserDao dao,UserInfo user,String school){    this.dao=dao;    this.school=school;    this.user=user;    }   public void execute(){    dao.addUser();    dao.updateUser();    dao.delUser();     System.out.println(user);    System.out.println(school);}
//配置文件<bean name="userInfo_name" class="cat.beans.UserInfo" >  <property name="id" value="1" />  <property name="userName" value="周周" />  <property name="passWord" value="123" />  <property name="note" value="这是备注" /></bean>   <bean name="userAction_name" class="cat.action.UserAction" >  <constructor-arg ref="userDao_name" />  <constructor-arg ref="userInfo_name" />  <constructor-arg value="哈尔滨师范大学" /></bean>    <bean name="userDao_name" class="cat.dao.UserDaoImpl" />
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

三、静态工厂方式

//工厂,用来生成dao的实现类public class UserDaoFactory {public static IUserDao createUserDaoInstance(){  return new UserDaooracleImpl();  }} public class UserAction {  private IUserDao dao;//使用工厂方式注值,也要生成set方法  public void execute(){    dao.addUser();    dao.updateUser();    dao.delUser();}public void setDao(IUserDao dao) {    this.dao = dao;    } }
//配置文件 <bean name="userAction_name" class="cat.action.UserAction" ><property name="dao" ref="userDao_name" /></bean><bean name="userDao_name" class="cat.dao.UserDaoFactory" factory-method="createUserDaoInstance" />
//测试ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");UserAction action=(UserAction)ctx.getBean("userAction_name");action.execute();

四、实例工厂

//工厂 =>public class UserDaoFactory {//这个方法不是静态的public IUserDao createUserDaoInstance(){  return new UserDaoOracleImpl();  }}
//配置文件 <bean name="userAction_name" class="cat.action.UserAction" ><property name="dao" ref="userDao_name" /></bean><bean name="userDaoFactory_name" class="cat.dao.UserDaoFactory" /><bean name="userDao_name" factory-bean="userDaoFactory_name" factory-method="createUserDaoInstance" />

以上是“Spring中实例化bean的方式有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Spring中实例化bean的方式有哪些

本文链接: https://www.lsjlt.com/news/219935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring中实例化bean的方式有哪些
    这篇文章主要为大家展示了“Spring中实例化bean的方式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring中实例化bean的方式有哪些”这篇文章吧。前言在介绍Bean的实例化的...
    99+
    2023-05-30
  • Spring实例化bean的方式有哪些
    这篇文章主要介绍了Spring实例化bean的方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring实例化bean的方式有哪些文章都会有所收获,下面我们一起来看看吧。一、bean实例化&m...
    99+
    2023-07-02
  • Spring中Bean的三种实例化方式详解
    目录一、环境准备二、构造方法实例化三、分析Spring的错误信息四、静态工厂实例化4.1 工厂方式创建bean4.2 静态工厂实例化五、实例工厂与FactoryBean5.1 环境准...
    99+
    2024-04-02
  • spring中bean实例化的三种方式 -- Spring入门(二)
    文章目录 前言1.Bean实例化简介2.bean的实例化 -- 构造方法3.bean的实例化 -- 静态工厂实例化4.bean实例化 -- 实例工厂和FactoryBean5.三种bean实例化方式的区别 总结 前言 为了...
    99+
    2023-08-19
    spring java 后端
  • 详解Spring中bean实例化的三种方式
    今天我想来说说如何通过xml配置来实例化bean,其实也很简单。 使用xml配置来实例化bean共分为三种方式,分别是普通构造方法创建、静态工厂创建、实例工厂创建,OK,那么接下来我们来分别看看这几种方式。普通构造方法创建这种创建方式使我们...
    99+
    2023-05-31
    实例化 spring bean
  • spring装配bean的方式有哪些
    Spring装配Bean的方式有以下几种:1. 基于XML配置文件:通过在XML配置文件中定义Bean的方式进行装配,可以使用元素定...
    99+
    2023-09-27
    spring bean
  • Spring定义Bean的方式有哪些
    本文小编为大家详细介绍“Spring定义Bean的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring定义Bean的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.通过XML的方式来...
    99+
    2023-07-05
  • Spring Bean实例化方式怎么实现
    这篇“Spring Bean实例化方式怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-07-05
  • Spring创建bean的方式有哪些
    这篇文章主要讲解了“Spring创建bean的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring创建bean的方式有哪些”吧!环境Ubuntu 22.04IntelliJ ...
    99+
    2023-07-02
  • spring注入bean的方式有哪些
    Spring注入Bean的方式有以下几种:1. 构造器注入:通过构造器参数来注入依赖的Bean。2. Setter方法注入:通过调用...
    99+
    2023-09-05
    spring bean
  • Spring Bean获取方式的实例化方式详解
    目录1.通过构造方法实例化2.通过简单工厂模式实例化3.通过factory-bean实例化4.通过FactoryBean接口实例化5.BeanFactory和FactoryBean的...
    99+
    2023-03-09
    Spring获取bean的方式 Spring Bean获取方式
  • Spring Bean中Bean的实例化分析
    这篇文章主要介绍了Spring Bean中Bean的实例化分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Bean中Bean的实例化分析文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • Spring实例化bean的四种方式详解
    目录一、bean实例化——构造方法(常用)二、bean实例化——静态工厂(了解)三、bean实例化——实例工厂...
    99+
    2024-04-02
  • Spring容器中添加bean的方式有哪些
    这篇文章主要介绍“Spring容器中添加bean的方式有哪些”,在日常操作中,相信很多人在Spring容器中添加bean的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring容器中添加bean...
    99+
    2023-06-20
  • Spring IOC的bean声明方式有哪些
    本篇内容主要讲解“Spring IOC的bean声明方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring IOC的bean声明方式有哪些”吧!  Spring简介  Spring...
    99+
    2023-06-02
  • 详解Spring Bean的配置方式与实例化
    目录一、 Spring Bean 配置方式配置文件开发注解开发二、Spring Bean实例化环境准备构造方法实例化Bean静态工厂实例化Bean实例工厂实例化BeanFactory...
    99+
    2024-04-02
  • Spring中有哪些bean
    这篇文章主要讲解了“Spring中有哪些bean”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring中有哪些bean”吧!  Spring中有两种bean, 用的最多的是 annota...
    99+
    2023-06-02
  • Spring Bean属性注入的方式有哪些
    这篇文章主要介绍“Spring Bean属性注入的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Bean属性注入的方式有哪些”文章能帮助大家解决问题。属性...
    99+
    2023-07-02
  • Spring中获取Bean对象的注入方式有哪些
    本篇内容主要讲解“Spring中获取Bean对象的注入方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中获取Bean对象的注入方式有哪些”吧!前言获取 bean 对象也叫做对...
    99+
    2023-07-05
  • Spring中bean实例化怎么实现
    本文小编为大家详细介绍“Spring中bean实例化怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring中bean实例化怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。bean实例化bean...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作