当前位置: 首页 > news >正文

spring实例化对象的几种方式(使用XML配置文件)

前言    

    Spring框架作为一个轻量级的控制反转(IoC)容器,为开发者提供了多种对象实例化的策略。通过这些策略,开发者可以更加灵活地控制对象的生命周期和依赖关系。无论是通过XML配置、注解配置还是Java配置,Spring都能轻松地实现对象的实例化。本文将介绍Spring实例化对象的几种常见方式。

前面的例子都是无参构造实例化,所以这里就不再赘述。

有参构造实例化 

    先提供一个有参的构造方法:

    public UserService(String str){System.out.println("有参构造实例化对象"+str);}

然后在配置的xml文件使用constructor-arg添加参数,value为参数的值

    <bean id="text" class="com.cc.service.UserService" ><constructor-arg name="str" value="hhhhhh"/></bean>

注意name的值要与形参相同:

  

运行结果如图:


在有多个参数的情况下,还需要使用index属性来配置参数的值(如果name属性都配置了也可以不用index):

    public UserService(String str,int string){System.out.println("有参构造实例化对象"+str+","+string);}
    <bean id="text" class="com.cc.service.UserService" ><constructor-arg name="str" index="0" value=""/><constructor-arg name="string" index="1" value="188"/></bean>

工厂方式实例化对象 

静态工厂方式实例化对象

    静态工厂方式实例化对象是通过属性factory-method来指定一个静态方法,在该静态方法中达到创建对象的目标并返回交给spring容器管理。

<bean id="user" class="com.cc.entity.User" factory-method="createObj"></bean>
public class User {public static Person createObj() {return new Person();}
}
public class Main {public static void main(String[] args) {ClassPathXmlApplicationContext a = new ClassPathXmlApplicationContext("test.xml");Person user = (Person) a.getBean("user");System.out.println(user);}
}

    采用静态工厂的方式去实例化对象,只需要在bean标签中指定一个静态方法即可,用factory-method属性来指定,方面名自已取,反正由idea自动帮我们创建好。然后我们只需要在创建好的静态方法中返回一个对象就搞定了。  

实例工厂方式实例化对象

    实例工厂方式与静态工厂方式略有不同:

    静态工厂方式是一个静态方法,它直接通过类名调用,并返回一个新的bean实例;

    在xml配置文件中,使用<bean>标签定义bean实例,用factory-method属性指定静态工厂方法名称

    实例工厂方式是一个非静态方法,它需要在已经创建了工厂对象的基础上,通过工厂对象来调用。

    factory-bean指定已经创建好的工厂bean的id,再使用factory-method属性指定工厂方法的名称

    <bean id="user" class="com.cc.entity.User" ></bean><bean id="person" class="com.cc.entity.Person" factory-bean="user" factory-method="createObj"></bean>
public class User {public User createObj() {return new User();}
}
public class Main {public static void main(String[] args) {ClassPathXmlApplicationContext a = new ClassPathXmlApplicationContext("test.xml");Object bean = a.getBean("person");System.out.println(bean);}
}

实现FactoryBean方式


http://www.mrgr.cn/news/80294.html

相关文章:

  • 鸿蒙调试打包(非正式打包)
  • (南京观海微电子)——GH700X RGB接口闪屏案例分析
  • 精品基于Python实现的微信小程序校园导航系统-微信小程序
  • 【ChatGPT出现降智无法画图和联网解决方法】
  • 远程调试软件对比与使用推荐
  • 浅谈I-STARIS国际演艺集团为融合中国市场,开办的各类中式训练营
  • Golang囊地鼠gopher
  • 【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形嘴)
  • 修炼之道 --- 其二
  • LRM-典型 Transformer 在视觉领域的应用,单个图像生成3D图像
  • 将带注释的Word文档改造成点击注释引用即可弹窗显示注释的HTML文档
  • 学习Guava库 学习实用示例 实例 核心提纲
  • gorm源码解析(一):ORM概览
  • tryhackme——Defensive Security Intro(防御安全简介)
  • opencv小练习(未完成版)
  • google 的guava 学习 基本工具类
  • WPF 相比 winform 的优势
  • 一、windows上配置ninja环境
  • Leetcode 面试150题 399.除法求值
  • Windows 系统下 Python 环境安装
  • Ansible自动化运维(五) 运维实战
  • 域名信息收集(小迪网络安全笔记~
  • 2024.12.15CISCN长城杯铁人三项赛
  • Jinja2模板、Roles角色详解
  • Linux 中的 mkdir 命令:深入解析
  • 10个富士胶片模拟的设置