使用SpringBoot根据配置注入接口的不同实现类

public interface UserService {
    String login();
}
@Service("AUserServiceImpl")
public class AUserServiceImpl implements UserService {
 
    @Override
    public String login() {
        return "";
    }
}
@Service("BUserServiceImpl")
public class BUserServiceImpl implements UserService {
 
    @Override
    public String login() {
1        return "";
    }
 
}
@RequestMapping("/user")
@RestController
public class UserController {
 //@Resource注解的参数可以加入变量,变量可以在配置文件中配置
    @Resource(name=  "${system.userservice}UserServiceImpl")
    private UserService userService;
 
    @GetMapping("/login")
    public String login(){
        return userService.login();
    }
 
}
server:
  port: 8081
 
system:
  userservice: A

第二中方式使用@ConditionalOnProperty

@Component

@ConditionalOnProperty(name = "serviceControl",havingValue = "A")

public class AUserServiceImpl implements UserService {

@Override

public String login() {

return "";

}

}

@Component

@ConditionalOnProperty(name = "serviceControl",havingValue = "B")

public class BUserServiceImpl implements UserService {

@Override

public String login() {

1 return "";

}

}

@RequestMapping("/user")

@RestController

public class UserController {

@Resource

private UserService userService;

@GetMapping("/login")

public String login(){

return userService.login();

}

}

server:
  port: 8081
 
serviceControl: A

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