使用spring boot 实现两个没有关系的类注入

两个类既不是接口与实现类的关系,也不是父子类关系,那能不能注入呢? 答案:可以的

1、新建一个类 A

package io.xiongdi.controller;

public class ClassA {

    public void print(){
        System.out.println("this is class A");
    }
}

 

2、然后建一个类 B,两者没有任何关系,只有一个方法返回类 A

package io.xiongdi.controller;

import org.springframework.stereotype.Component;

@Component
public class ClassB {
    public ClassA getClassA(){
        return new ClassA();
    }
}

 

3、在建一个类,使 spring 去找类 B 的方法去给类 A 注入,继承 PropertyEditorSupport 实现 setValue 方法

package io.xiongdi.controller;

import java.beans.PropertyEditorSupport;

public class ClassAEditor extends PropertyEditorSupport {
    @Override
    public void setValue(Object value) {
        super.setValue(((ClassB)value).getClassA());
    }
}

 

4、使用测试类,验证效果

package io.xiongdi.test;

import io.xiongdi.controller.ClassA;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

@SpringBootTest
@RunWith(SpringRunner.class)
public class EditorTest {
    
    @Resource(name = "classB")
    private ClassA a;
    
    @Test
    public void testa(){
        a.print();
    }
}

 

看看输出效果吧

 

注意: 类名 ClassAEditor 不能改,因为 spring 是根据 要注入的  类名 + Editor 来找到的

posted @ 2019-07-17 00:16  渣男梦想  阅读(752)  评论(0编辑  收藏  举报