美文网首页工作生活
巧用 Spring @Autowired 干掉 else if

巧用 Spring @Autowired 干掉 else if

作者: 醉疯觞 | 来源:发表于2019-06-29 15:36 被阅读0次

代码可能这样

  public class handler {
  
      void handler(String param){
        if('A'.equals(param)){
            ATestService.do();
        }else if('B'.equals(param){
            BTestService.do();
        }
      }
      
  }

@Autowired用法

@Autowired 官方文档

    private Map<String, MovieCatalog> movieCatalogs;

    @Autowired
    public void setMovieCatalogs(Map<String, MovieCatalog> movieCatalogs) {
        this.movieCatalogs = movieCatalogs;
    }

    // ...

利用这种方式的自动注入,可以将同一个接口的实现bean,注入MapMapkeyBean的名称namevalue为该bean

干掉 else if

// 接口
public interface TestService {
    
    void do();
    
}

// 实现 bean A

@Service("A")
public class  ATestServiceImpl Impl TestService{
    
    void do(){
        ...
    }
}

// 实现 bean B
@Service("B")
public class  BTestServiceImpl Impl TestService{
    
    void do(){
        ...
    }
}

@Component
public class handler {
    
    @Autowired(required = false)
    private Map<String, TestService> services = Maps.newHashMap();


    void handler(String beanName) {
        TestService service =  services.get(beanName);
        service.do();
    
    }

}

其他

当然也可以用其他的方法获取bean来进行解耦,例如继承ApplicationContextAware,通过ApplicationContext#getBeansOfType方法获取bean集合

相关文章

  • 巧用 Spring @Autowired 干掉 else if

    代码可能这样 @Autowired用法 @Autowired 官方文档 利用这种方式的自动注入,可以将同一个接口的...

  • Spring 注解大全

    一、Spring Core系列 1、@Autowired @Autowired标记Spring将要解析和注入的依赖...

  • Spring之DI(注解方式)

    一、Spring提供的标签 1、Autowired标签 @Autowired:是Spring定义的标签,所以不太稳...

  • Spring 注解驱动

    @Autowired、@Resource、@Inject 区别 @Autowired:Spring定义的。默认优先...

  • Spring Autowired注入逻辑

    Spring Autowired注入逻辑 在Spring中使用Autowired注解,当有多个bean的类型符合的...

  • 我对芋道源码的干掉if else的具体代码

    之前看了芋道源码的一篇文章在 Spring Boot 中,如何干掉 if else,觉得这个代码好像有点意思,我就...

  • The difference between @Autowire

    Autowired (由Spring提供) @Autowired 与 @Resource 都可以通过注入 Fiel...

  • Spring Boot中如何干掉if else

    需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。...

  • Spring Boot中如何干掉if else

    需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。...

  • Spring Boot中如何干掉if else

    需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。...

网友评论

    本文标题:巧用 Spring @Autowired 干掉 else if

    本文链接:https://www.haomeiwen.com/subject/wwepcctx.html