Spring 中的 Service 有多个实现类如何注入

        我这里指示三种方式:

        一、Controller中注入service的时候使用@Autowired自动注入,@Qualifier("实现类名首字母小写")来注入。

    // 接口
    public interface XxxxService {
        public String xxxx();
    }    


    // 实现类用 
    @Service
    public class XxxxServiceImpl implements XxxxService {
        @Override
        public String xxxx() {
            // 具体处理逻辑
            return "xxxx";
        }
    }
    @Service
    public class YyyyServiceImpl implements XxxxService {
        @Override
        public String yyyy() {
            // 具体处理逻辑
            return "yyyy";
        }
    }
    

    // Controller 中注入service 根据beanId(类名首字母小写) -> xxxxServiceImpl
    @Autowired
    @Qualifier("xxxxServiceImpl")
    private XxxxService xxxxService;

        二、Controller中注入service的时候使用@Resource(type = 类名.class)来注入。

    // 接口
    public interface XxxxService {
        public String xxxx();
    }    


    // 实现类用 
    @Service
    public class XxxxServiceImpl implements XxxxService {
        @Override
        public String xxxx() {
            // 具体处理逻辑
            return "xxxx";
        }
    }
    @Service
    public class YyyyServiceImpl implements XxxxService {
        @Override
        public String yyyy() {
            // 具体处理逻辑
            return "yyyy";
        }
    }
    

    // Controller 中注入service
    @Resource(type = XxxxServiceImpl.class)
    private XxxxService xxxxService;

        三、每个service的impl使用 @Service(“名称”)指定名称,Controller中注入service的时候使用@Resource(name="名称")注入。

    // 接口
    public interface XxxxService {
        public String xxxx();
    }    


    // 实现类用 
    @Service("xxxxService")
    public class XxxxServiceImpl implements XxxxService {
        @Override
        public String xxxx() {
            // 具体处理逻辑
            return "xxxx";
        }
    }
    @Service("yyyyService")
    public class YyyyServiceImpl implements XxxxService {
        @Override
        public String yyyy() {
            // 具体处理逻辑
            return "yyyy";
        }
    }
    

    // Controller 中注入service 根据beanId(@Service括号中的字符串) -> xxxxService
    @Resource(name="xxxxService")
    private XxxxService xxxxService;

你可能感兴趣的:(spring,java,后端)