• 使用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 来找到的

    只要你不觉得尴尬,那尴尬的就是别人
  • 相关阅读:
    Linux下的lds链接脚本详解
    STM32启动过程解读与跟踪验证
    STM32的启动过程分析
    STM32启动过程--启动文件--分析
    STM32之中断
    STM32F4XX启动文件分析
    Synergy CORTEX M 启动流程
    AT 指令和常见错误码
    Tomcat部署时war和war exploded区别
    C++虚函数表解析***
  • 原文地址:https://www.cnblogs.com/wujiaxing/p/11198443.html
Copyright © 2020-2023  润新知