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前端搭建