Inyección de constructor de resorte (2)

Inyección del constructor de Spring

En el artículo anterior, se mencionó que Spring puede reducir la dependencia entre programas, confiando en la creación de objetos a Spring.
Pero cuando no hay un constructor predeterminado en mi clase o el constructor se sobrescribe, incluso si se crea mi objeto, los métodos de la clase no se pueden llamar.

Esta nota presenta principalmente la inyección de parámetros del constructor en Spring. Primero, primero transformamos la clase que originalmente era UserServiceImpl y le damos un constructor con parámetros, sobrescribiendo así el constructor predeterminado original.

public class UserServiceImpl implements IUserService {
    
    
    private String name;
    private Integer age;
    private Date birthday;

 
    public UserServiceImpl(String name, Integer age, Date birthday) {
    
    
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public void queryAll() {
    
    
        System.out.println(name+","+age+","+birthday+".");
    }
}

Luego, en bean.xml, hay una etiqueta constructor-arg con los siguientes atributos

  • tipo: se usa para especificar el tipo de datos de los datos que se inyectarán, el tipo de datos también es el tipo de uno o algunos parámetros en el constructor
  • índice: se utiliza para asignar los datos que se inyectarán al parámetro en la posición de índice especificada en el constructor. La posición del parámetro comienza desde 0
  • nombre: se utiliza para asignar un parámetro al nombre especificado en el constructor
  • valor: se utiliza para proporcionar tipos de datos básicos y datos de tipo String
  • ref: se utiliza para especificar otros datos de tipo bean. Como la fecha anterior

Con los atributos anteriores, podemos usar el nombre y el valor de uso común para la inyección del constructor

    <bean id="UserService" class="com.imis.service.impl.UserServiceImpl">
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="name" value="mike"></constructor-arg>
        <constructor-arg name="birthday" ref="now"></constructor-arg>
    </bean>
    <bean id="now" class="java.util.Date"></bean>
public static void main(String[] args) {
    
    
        //1.获取核心容器对象
        ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
        //2.根据id获取bean
        IUserService is=ac.getBean("UserService",IUserService.class);
        is.queryAll();
    }
mike,18,Sun Jan 17 14:41:03 CST 2021.

Supongo que te gusta

Origin blog.csdn.net/weixin_45925906/article/details/112743981
Recomendado
Clasificación