05-spring-构造注入

Posted 美好的明天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05-spring-构造注入相关的知识,希望对你有一定的参考价值。

spring中只有两大核心技术:

控制反转(IOC)&依赖注入(DI),AOP(面向切面编程)

依赖注入

指利用配置文件的关系,来决定类之间的引用关系,以及数据的设置操作。

 

构造方法注入

默认在applicationContext文件中配置的程序都可以自动通过spring容器加载时自动对对象实例化。

但是自动进行初始化的时候,调用的是类中的无参构造方法,而且通过反射机制可以知道,无参构造方法一定比有参构造方法的实例化更容易。

但是spring简化了反射的处理机制。利用spring中的动态的特性可以直接明确调用构造方法参数。

 

构造注入之前的文章已经有了,这里只补充前面没有的内容。

除了有之前的通过index,参数类型配置bean。

还能使用参数名称描述构造方法

Dept类:

package com.Spring.Demo;

import java.beans.ConstructorProperties;

public class Dept {
    
    private Integer deptno;
    private String name;
    
    @ConstructorProperties(value={"paramDeptno","paramDeptName"})
    public Dept(Integer deptno, String name) {
        this.deptno = deptno;
        this.name = name;
    }
    @Override
    public String toString() {
        return "Dept [deptno=" + deptno + ", name=" + name + "]";
    }
}

调用这个方法:

package com.Spring.Demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDept {

    public static void main(String[] args) {

        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        Dept dept=ctx.getBean("dept",Dept.class);
        System.out.println(dept);
    }

}

Dept.java类 设置参数名称:

@ConstructorProperties(value={"paramDeptno","paramDeptName"})
    public Dept(Integer deptno, String name) {
        this.deptno = deptno;
        this.name = name;
    }

也就是说设置的时候可以使用paramDeptno来代替索引0,paramDeptName代替索引1。

利用参数名称进行设置:

    <bean id="dept" class="com.Spring.Demo.Dept">
        <constructor-arg name="paramDeptno" value="10" ></constructor-arg>
        <constructor-arg name="paramDeptName" value="开发部门" ></constructor-arg>
    </bean>

 

真使用构造方法,还是使用参数的类型和顺序编写比较方便。

以上是关于05-spring-构造注入的主要内容,如果未能解决你的问题,请参考以下文章

Android 片段和依赖注入

Android片段和依赖注入

这些角度电子邮件指令代码片段如何连接

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

spring 05-Spring框架依赖集合注入

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段