网站多网合一,太仓建设工程网站,达州市建设规划网站,上海企业建站前言 Spring框架作为一个轻量级的控制反转#xff08;IoC#xff09;容器#xff0c;为开发者提供了多种对象实例化的策略。通过这些策略#xff0c;开发者可以更加灵活地控制对象的生命周期和依赖关系。无论是通过XML配置、注解配置还是Java配置#xff0c;Spring都能…前言 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属性都配置了也可以不用index public 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标签定义bean实例用factory-method属性指定静态工厂方法名称 实例工厂方式是一个非静态方法它需要在已经创建了工厂对象的基础上通过工厂对象来调用。 factory-bean指定已经创建好的工厂bean的id再使用factory-method属性指定工厂方法的名称 bean iduser classcom.cc.entity.User /beanbean 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方式