自动注入@InjectField的使用

1.添加依赖

<dependency>
    <groupId>com.bamboo</groupId>
    <artifactId>bamboo-injection-starer</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>  

2.application.yml配置

bamboo:
  injection:
    # 是否启用 远程数据 手动注入
    enabled: true
    # 是否启用 远程数据 注解注入 
    aop-enabled: true

3.在需要注入的对象上添加注解@InjectionField

import static com.bamboo.common.constant.InjectionFieldConstants.ORG_ID_CLASS;
import static com.bamboo.common.constant.InjectionFieldConstants.ORG_ID_METHOD;

public class Station {
    // 正常的字段
    private String name;

     
    /**
     * 行政区级
     * @InjectionField(api = DICTIONARY_ITEM_CLASS, method = DICTIONARY_ITEM_METHOD) RemoteData<String, String>
     * 
     * 
     */
    @InjectionField(api = "dictionaryItemServiceImpl", method = "findDictionaryItem")
    private RemoteData<String, String> level;

    /**
     * 组织ID 
     * 需要注入 组织的相关数据
     */
    @InjectionField(api = ORG_ID_CLASS, method = ORG_ID_METHOD)
    private RemoteData<Long, com.bamboo.authority.entity.core.Org> org;

}

4.手动注入:

public class Controller{
    
    @Autowired
    private InjectionCore injectionCore;
    
    @Test
    public void test(){
        Station station = Station.builder().org(new RemoteData(101L)).level(new RemoteData("CITY")).build(); // 从数据库连查询出来
        // 手动注入 ,注意:不调用该方法,不会注入数据    
        injectionCore.injection(station);
        log.info(station);
    
        Station station1 = Station.builder().org(new RemoteData(101L)).level(new RemoteData("CITY")).build();     
        Station station2 = Station.builder().org(new RemoteData(102L)).level(new RemoteData("DIQU")).build();     
        List<Station> list = Arrays.asList(station1, station2); // 从数据库连查询出来

        // 手动注入 ,注意:不调用该方法,不会注入数据
        injectionCore.injection(list);
        log.info(list);
    }

}

5.自动注入:

public class Controller{
    
    @Autowired
    private Service service;
    
    @Test
    public void test(){
        // 直接调用
        Station station = service.get();
        log.info(station);
    
        // 直接调用 
        List<Station> list = service.list();
        log.info(list);
    }

}
@org.springframework.stereotype.Service
public class Service{
    
    // 通过这个注解 实现注入
    @InjectionResult
    public Station get(){
        Station station = Station.builder().org(new RemoteData(101L)).level(new RemoteData("CITY")).build(); // 从数据库连查询出来
        return station;
    }
    // 通过这个注解 实现注入
    @InjectionResult
    public List<Area> list(){
        Station station1 = Station.builder().org(new RemoteData(101L)).level(new RemoteData("CITY")).build();     
        Station station2 = Station.builder().org(new RemoteData(102L)).level(new RemoteData("DIQU")).build();     
        List<Station> list = Arrays.asList(station1, station2); // 从数据库连查询出来
        return list;
    }
}

发布了71 篇原创文章 · 获赞 102 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_44717317/article/details/104247076