当前位置:   article > 正文

银行外包java面试题目,Spring系列,2024历年阿里Java面试真题_银行外包java基础和sql题库

银行外包java基础和sql题库

return “DiAutowireByName{” +
“service1=” + service1 +
“, service2=” + service2 +
‘}’;
}
}

这个类中有2个属性,名称为:

  • service1

  • service2

这两个属性都有对应的set方法。

下面我们在bean xml中定义2个和这2个属性同名的bean,然后使用按照名称进行自动注入。

diAutowireByName.xml

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

上面注释认真看一下。

@1:定义了一个名称为service1的bean

@2:定义了一个名称为service2的bean

@3:定义diAutowireByName需要将autowire的值置为byName,表示按名称进行自动注入。

spring容器创建diAutowireByName对应的bean时,会遍历DiAutowireByName类中的所有set方法,然后得到set对应的属性名称列表:{“service1”,“service2”},然后遍历这属性列表,在容器中查找和属性同名的bean对象,然后调用属性对应的set方法,将bean对象注入进去

测试用例

package com.javacode2018.lesson001.demo6;

import com.javacode2018.lesson001.demo5.IocUtils;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class DiAutowireTest {

/**

  • 按照名称进行注入
    */
    @Test
    public void diAutowireByName() {
    String beanXml = “classpath:/com/javacode2018/lesson001/demo6/diAutowireByName.xml”;
    ClassPathXmlApplicationContext context = IocUtils.context(beanXml);
    System.out.println(context.getBean(“diAutowireByName”));
    }
    }

效果

运行diAutowireByName输出:

setService1->Service1{desc=‘service1’}
setService2->Service2{desc=‘service2’}
setService2->Service2{desc=‘service2-1’}
setService1->Service1{desc=‘service1’}
DiAutowireByName{service1=Service1{desc=‘service1’}, service2=Service2{desc=‘service2’}}
DiAutowireByName{service1=Service1{desc=‘service1’}, service2=Service2{desc=‘service2-1’}}

优缺点

按名称进行注入的时候,要求名称和set属性的名称必须同名,相对于硬编码的方式注入,确实节省了不少代码。

按照类型进行自动注入

用法

autowire设置为byType

spring容器会遍历x类中所有的set方法࿰

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/778824
推荐阅读
相关标签
  

闽ICP备14008679号