Spring(五):IoC创建对象的方式(spring创建对象的几种方式)

  本篇文章为你整理了Spring(五):IoC创建对象的方式(spring创建对象的几种方式)的详细内容,包含有如何创建spring的ioc容器 spring创建对象的几种方式 spring创建对象的三种方式 spring创建对象的底层原理 Spring(五):IoC创建对象的方式,希望能帮助你了解 Spring(五):IoC创建对象的方式。

  一、bean被创建的时间

  考虑一个问题,我们都知道spring通过xml的配置创建bean,那么bean是什么时间被创建的呢?是在我们getBean()的时候创建的吗?

  我们来做一个测试:

  1.首先建立一个User类:

  

package com.jms.pojo;

 

  public class User {

   private String name;

   public User() {

   System.out.println("User被创建了");

   public String getName() {

   return name;

   public void setName(String name) {

   this.name = name;

   @Override

   public String toString() {

   return "User{" +

   "name=" + name + \ +

   };

  }

 

  我们在User的无参构造中加入了一个打印语句,当User被创建时就会打印出“User被创建了”。

  2.然后对应的一个xml配置文件:

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   beans xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   https://www.springframework.org/schema/beans/spring-beans.xsd"

   bean id="user"

   property name="name" value="jms"/

   /bean

   /beans

 

  3.一个测试

  

@Test

 

   public void userTest() {

   ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

   }

 

  这个测试只有创建容器这一行代码。

  测试结果:

  

  

  由上可以看出,即使我们没有使用bean,bean也在创建容器的时候就被创建并且存放在了容器之中;还可以看出,创建bean的方式默认是调用无参构造。

  二、IoC创建对象的方式

  1.默认:通过无参构造进行创建

  2.通过有参构造创建

  虽然默认是通过无参构造进行创建,我们能不能通过有参构造进行创建呢?答案是可以的。

  我们还是先来做个测试,用一个有参构造覆盖无参构造:

  

package com.jms.pojo;

 

  public class User {

   private String name;

   public User(String name) {

   this.name = name;

   public String getName() {

   return name;

   public void setName(String name) {

   this.name = name;

   @Override

   public String toString() {

   return "User{" +

   "name=" + name + \ +

   };

  }

 

  此时xml文件会报错:

  

  

  那么如何在xml中配置有参构造呢?

  官方给出了三种方法:

  (1)通过类型进行配置

  

 bean id="user" 

 

   constructor-arg type="java.lang.String" value="jms"/

   /bean

 

  这种配置方法并不适用于有相同类型的情况,所以不建议用。

  (2)通过索引进行配置

  

 bean id="user" 

 

   constructor-arg index="0" value="jms"/

   /bean

 

  索引从0开始依次递增,由于我这里只有一个参数,所以只有一个0.

  (3)通过参数名进行配置

  

 bean id="user" 

 

   constructor-arg name="name" value="jms"/

   /bean

 

  这种方法应该是最简单明了的。

  还有一种特殊情况就是传入的参数也是一个bean,这种情况官方同样给出了解决的方案:

  

package x.y;

 

  public class ThingOne {

   public ThingOne(ThingTwo thingTwo, ThingThree thingThree) {

   // ...

  }

 

  以上就是Spring(五):IoC创建对象的方式(spring创建对象的几种方式)的详细内容,想要了解更多 Spring(五):IoC创建对象的方式的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: