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

发布时间:2026/7/28 4:33:01

spring实例化对象的几种方式(使用XML配置文件) 前言Spring框架作为一个轻量级的控制反转IoC容器为开发者提供了多种对象实例化的策略。通过这些策略开发者可以更加灵活地控制对象的生命周期和依赖关系。无论是通过XML配置、注解配置还是Java配置Spring都能轻松地实现对象的实例化。本文将介绍Spring实例化对象的几种常见方式。前面的例子都是无参构造实例化所以这里就不再赘述。有参构造实例化先提供一个有参的构造方法public UserService(String str){ System.out.println(有参构造实例化对象str); }然后在配置的xml文件使用constructor-arg添加参数value为参数的值bean idtext classcom.cc.service.UserService constructor-arg namestr valuehhhhhh/ /bean注意name的值要与形参相同运行结果如图在有多个参数的情况下还需要使用index属性来配置参数的值如果name属性都配置了也可以不用indexpublic UserService(String str,int string){ System.out.println(有参构造实例化对象str,string); } bean idtext classcom.cc.service.UserService constructor-arg namestr index0 value/ constructor-arg namestring index1 value188/ /bean工厂方式实例化对象静态工厂方式实例化对象静态工厂方式实例化对象是通过属性factory-method来指定一个静态方法在该静态方法中达到创建对象的目标并返回交给spring容器管理。bean iduser classcom.cc.entity.User factory-methodcreateObj/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实例用factory-method属性指定静态工厂方法名称实例工厂方式是一个非静态方法它需要在已经创建了工厂对象的基础上通过工厂对象来调用。factory-bean指定已经创建好的工厂bean的id再使用factory-method属性指定工厂方法的名称bean iduser classcom.cc.entity.User /bean bean idperson classcom.cc.entity.Person factory-beanuser factory-methodcreateObj/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方式通过这种方式创建对象需要实现FactoryBean接口并且实现它的方法一般只需实现以下两个方法T getObject() : 返回创建的对象的实例Class getObjectType() : 返回创建的对象实例的类然后在Spring的配置文件中将 FactoryBean实现类注册为一个Bean。public class User implements FactoryBeanPerson { Override public Person getObject() throws Exception { return new Person(); } Override public Class? getObjectType() { return Person.class; } } bean classcom.cc.entity.User iduser/bean

相关新闻