一个controller调用根据不同业务分发不同service,通过SpringBoot @ConditionalOnProperty来实现

controller层

import com.jiuding.mhzx_admin.admin.service.UserAdminService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

@Api(description = "用户信息")
@RequestMapping("/userAdmin")
@RestController
@Slf4j
public class UserAdminController{

    @Resource
    private UserAdminService userService;

    /**
     * id查询用户,用于远程验证
     * @param userId
     * @param request
     * @return
     */
    @GetMapping("/byid/{id}")
    String userByid(@PathVariable("id") Integer userId,HttpServletRequest request) {
        log.info("***{}******",userId);
        return  userService.get(userId);
    }
}

service层

import com.jiuding.util.vo.UserDO;
import org.springframework.stereotype.Service;

@Service
public interface UserAdminService {
    String get(Integer userId);

    UserDO getUserByName(String username);

}

serviceImpl实现层(看结构两个实现 1和2)

实现层impl 1中类容

主要注解配置

@Configuration
@ConditionalOnProperty(name = "serviceone", havingValue = "true")


import java.util.Optional;

@Configuration
@ConditionalOnProperty(name = "serviceone", havingValue = "true")
public class UserAdminServiceImpl implements UserAdminService {

    @Autowired
    private SysUserDao sysUserDao;
    /**
     * 用户id查询用户
     * @param userId
     * @return
     */
    @Override
    public String get(Integer userId) {
        Optional<SysUser> ouser=sysUserDao.findById(userId);
        if (ouser.isPresent()){
            SysUser user=ouser.get();
            UserDO userDO = new UserDO();
            StringUtils.fatherToChild(user,userDO);
            userDO.setUserId(user.getUserId());
            userDO.setPassword(user.getPassword());
            userDO.setUsername(user.getUsername());
            userDO.setName(user.getName());
            userDO.setStatus(user.getStatus());
            return JSON.toJSONString(userDO);
        }
        return null;
    }
}

实现层impl 2中类容

@Configuration
@ConditionalOnProperty(name = "servicetwo", havingValue = "true")
public class UserAdminServiceImpl2 implements UserAdminService {

    /**
     * 用户id查询用户
     * @param userId
     * @return
     */
    @Override
    public String get(Integer userId) {

        return "xxxxxxxxxx";
    }
}

springboot的application.yml配置

#实现层的选择配置项 false  true 以此来切换
serviceone: false
servicetwo: true

经过一番寻觅,发现了Spring boot中有个注解@ConditionalOnProperty,这个注解能够控制某个configuration是否生效。具体操作是通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值,如果该值为空,则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该configuration不生效;为true则生效
 

了解更多另一种方案也很简单https://blog.csdn.net/qq_38567039/article/details/104362368

https://www.jianshu.com/p/9c3802080d9f

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值