Spring Cloud-OpenFegin

medical-manage-service项目的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.fh</groupId>
        <artifactId>medical-manage</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.fh</groupId>
    <artifactId>medical-manage-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>medical-manage-server</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <!--引用feign依赖-->
        <dependency>
            <groupId>com.fh</groupId>
            <artifactId>medical-manage-feign</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!--MySQL的依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--Mybatis-plus的jar资源-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.fh</groupId>
            <artifactId>medical-util</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

properties文件

server.port=9100
spring.application.name=medical-manage-service
#注册到Eureka的注册中心
eureka.client.register-with-eureka=true
#获取注册实例列表
eureka.client.fetch-registry=true
#配置注册中心地址
eureka.client.service-url.defaultZone=http://localhost:9090/eureka/

#mysql配置信息
spring.datasource.username= root
spring.datasource.password= root
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/medical_system?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#在控制太打印sql日志
mybatis-plus.configuration.log-impl= org.apache.ibatis.logging.stdout.StdOutImpl
#mybatis加载mapper映射文件
mybatis-plus.mapper-locations=classpath*:mapper/*.xml

debug= true
#去掉一些没必要的检查
logging.level.org.springframework.boot.autoconfigure= ERROR

启动类

@SpringBootApplication
@EnableDiscoveryClient  //将服务注册到注册中心上
@EnableFeignClients //启用 Feign 的客户端功能
public class MedicalManageServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MedicalManageServiceApplication.class, args);
    }

}

实体类

@Data
@TableName("system_user")
public class UserLoginDTO implements Serializable {
    @TableId(value = "id",type = IdType.AUTO)
    private int id;
    @TableField("username")
    private String username;
    @TableField("password")
    private String password;
}

controller层测试方法

@RestController
@RequestMapping("login")
@CrossOrigin(maxAge = 3600,origins = "http://localhost:8080")
public class UserLoginController {

    @Autowired
    private IUserLoginService userLoginService;

    /**
     * 登录验证
     * @param userLoginDTO  用户数据
     * @return
     */
    @PostMapping("/loginCheckOut")
    public ResponseServer loginCheckOut(@RequestBody UserLoginDTO userLoginDTO){
        if (StringUtil.isBlank(userLoginDTO.getUsername()) && StringUtil.isBlank(userLoginDTO.getPassword()))
            return ResponseServer.error(ResponseEnum.ISNULL_INPUT);
        UserLoginDTO dbUser=userLoginService.queryUserByUsername(userLoginDTO.getUsername());
        if (dbUser!=null){
            if(dbUser.getPassword().equals(userLoginDTO.getPassword()))
                return ResponseServer.success();
            else
                return ResponseServer.error(ResponseEnum.PASSWORD_ERROR);
        }
        return ResponseServer.error(ResponseEnum.USER_NO_EXIST);
    }
}

medical-manage-feign项目的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.fh</groupId>
        <artifactId>medical-manage</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.fh</groupId>
    <artifactId>medical-manage-feign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>medical-manage-feign</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <!--eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--openfeign依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fh</groupId>
            <artifactId>medical-util</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

因为只是暴露出接口并不是作为一个单独的服务因此没有启动类。

实体类

@Data
public class UserLoginDTO implements Serializable {
    private int id;
    private String username;
    private String password;
}

controller层测试调用接口

@RestController
@RequestMapping("user")
public class UserLoginFeignController {

    @Autowired
    private UserLoginFeign userLoginFeign;

    @PostMapping("/loginCheckOut")
    public ResponseServer loginCheckOut(@RequestBody UserLoginDTO userLoginDTO){
        return userLoginFeign.loginCheckOut(userLoginDTO);
    }
}

fegin接口

@FeignClient(value = "medical-manage-service")
public interface UserLoginFeign {

    /**
     * 登录验证
     * @param userLoginDTO  用户数据
     * @return
     */
    @PostMapping("login/loginCheckOut")
    ResponseServer loginCheckOut(@RequestBody UserLoginDTO userLoginDTO);
}

postman输入http://localhost:9100/user/loginCheckOut进行测试,此处用户名故意输错得出结果。


...待完





原文地址:https://www.cnblogs.com/agoodmanisme/p/1bd832f9b0fab3dd9ebf4485e4a8c137.html