SpirngCloud项目实战-----02

SpirngCloud项目实战-----02(搭建用户服务)


前言

上个项目我们已经创建好了Eureaka注册中心,当前项目我们进行Admin服务的创建。该项目用于用户的登陆。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Eureka客户端是什么?

Eureka客户端是将服务注册到当前的注册中心,进行服务之间的相互调用

二、博客lw_blog_admin项目搭建

1.idea创建项目

1、创建1个spirngBoot项目使用Eureka-Server服务。

在这里插入图片描述

2、pom中添加依赖(如果是直接创建得spirngboot项目则需要添加如下依赖,若按博主操作则无需)

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、application.properties文件配置

由于上篇已讲过配置什么意思此处不再细说。

spring.application.name = lw_blog_admin
server.port=8081
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/

4、@EnableDiscoveryClient注解添加

@SpringBootApplication
//此处标识为一个客户端可以注册到注册中心
@EnableDiscoveryClient
public class LwBlogAdminApplication {

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

}

三、启动项目

1、需要先启动eureka服务端在启动本项目。启动效果

在这里插入图片描述
应用名就会有对应的服务信息。不同服务可以通过feign进行相互调用。后面用到的时候我们会展示。

2、用户控制层

当前服务是用来做博客网站的登陆服务。因此会有用户对象控制。

在这里插入图片描述

@RestController
public class AdminController {

    @RequestMapping("/hello")
    public String index(@RequestParam String name) {
        return "hello "+name+",this is first messge";
    }
    }

测试该接口 : 调用地址 http://localhost:8081/hello?name=1
在这里插入图片描述

四、用户服务

1、主要功能

该服务为博客登陆服务,主要用于服务注册,以及服务登陆因此将为此功能提供这两个功能。

2、模块介绍

2.1 controller 层

用于提供外部访问API
核心代码

@RestController
public class AdminController {

    private final UserService userService;

    @Autowired
    public AdminController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping("/register")
    public ResponseMsg register(@RequestBody User user){
        User userFind = userService.findByUsername(user.getUsername());
        if(userFind != null){
            return ResponseMsg.onOk(null);
        }else {
            User newUser = new User();
            newUser.setUsername(user.getUsername());
            newUser.setPassword(Md5Util.encrypt(user.getPassword()));
            newUser.setCreateTime(DateUtil.getLocalTime());
            userService.save(newUser);
            return ResponseMsg.onOk(newUser);
        }


    }

    @PostMapping("/login")
    public ResponseMsg login(@RequestBody User user){
        User userFind = userService.findByUsernameAndPassword(user);
        return ResponseMsg.onOk(userFind);
    }
}

2.2 dao层

用于提供外部访问API
核心代码

public class UserDao {

    @Select("select * from user where username=#{username}")
    User findByUsername(@Param("username") String username);

    @Insert("insert into user(username, password, create_time, last_login_time) values (#{username}, #{password}, #{createTime}, #{lastLoginTime})")
    void save(User user);

    @Select("select * from user where username=#{username} and password=#{password}")
    User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}

2.2 dao层

提供数据库操作层
核心代码


public interface UserDao {

    @Select("select * from user where username=#{username}")
    User findByUsername(@Param("username") String username);

    @Insert("insert into user(username, password, create_time, last_login_time) values (#{username}, #{password}, #{createTime}, #{lastLoginTime})")
    void save(User user);

    @Select("select * from user where username=#{username} and password=#{password}")
    User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}

2.3 entity层

实体类
核心代码

@Data
@Accessors(chain = true)
public class User  implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private String createTime;
    private String lastLoginTime;
}

2.4 service层

服务API层
核心代码

public interface UserService {
    /**
     * findByUsername
     * @param username   username
     * @return User
     */
    User findByUsername(String username);

    /**
     * save
     * @param user user
     */
    void save(User user);

    /**
     * findByUsernameAndPassword
     * @param user user
     * @return User
     */
    User findByUsernameAndPassword(User user);
}

实现类

@Service
@Transactional(rollbackForClassName = {"Exception.class"})
public class UserServiceImpl  implements UserService {

    private final UserDao userDao;

    @Autowired
    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public User findByUsername(String username) {
        return userDao.findByUsername(username);
    }

    @Override
    public void save(User user) {
        userDao.save(user);
    }

    @Override
    public User findByUsernameAndPassword(User user) {
        //return userDao.findByUsernameAndPassword(user.getUsername(), Md5Util.encrypt(user.getPassword()));
        return null;
    }
}

总结

该篇文章简单介绍了用户注册的服务。下篇博客将进行vue.js前端搭建

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值