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