UserService.java
package edu.global.ex.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import edu.global.ex.mapper.UserMapper;
import edu.global.ex.vo.UserVO;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void addUser(UserVO user) {
log.info("addUser()..");
userMapper.insertUser(user);
userMapper.insertAuthorities(user);
}
}
LoginController.java
@GetMapping("/addUser/{id}/{pw}")
public String addUser(@PathVariable String id, @PathVariable String pw) throws Exception{
System.out.println(id + " : " + pw);
return "redirect:/";
}
[Console]
kim6 : kim6
kim7 : kim7
kim8 : kim8
LoginController.java
@Autowired
private PasswordEncoder encoder;
@Autowired
private UserService userService;
@GetMapping("/addUser/{id}/{pw}")
public String addUser(@PathVariable String id, @PathVariable String pw) throws Exception {
System.out.println(id + " : " + pw);
UserVO user = new UserVO();
user.setEnabled(1);
user.setUsername(id);
user.setPassword(encoder.encode(pw.toString().trim()));
System.out.println(user);
userService.addUser(user);
return "redirect:/";
}
localhost:8282/addUser/kim6/kim6 입력
(Developer에 kim6가 있고, ROLE_USER인지 확인)
localhost:8282/addUser/kim7/kim7 입력
(Developer에 kim7가 있고, ROLE_USER인지 확인)
kim8/kim8, kim9/kim9 등등 테스트...
UserService.java
public void addUser2(UserVO user) {
log.info("addUser()..");
userMapper.insertUser(user);
user = null; // 에러 유도
userMapper.insertAuthorities(user);
}
LoginController 의 addUser를 addUser2으로 바꾼다.
SQL 구문으로 kim6 / kim6 삭제 후 커밋
delete from authorities where username = 'kim6';
delete from users where username = 'kim6';
UserService.java
@Transactional
public void addUser3(UserVO user) {
log.info("addUser()..");
userMapper.insertUser(user);
user = null; // 에러 유도
userMapper.insertAuthorities(user);
}
LoginController 의 addUser를 addUser3으로 바꾼다.
USERS, AUTHORITIES 다 지우고 실행해본다.
(트랜잭션이 있어서 users에도 authorities에도 내용이 들어가지 않는다.)
UserService.java
@Transactional
public void addUser4(UserVO user) throws Exception {
log.info("addUser()..");
userMapper.insertUser(user);
userMapper.insertAuthorities(user);
throw new Exception("Exception (Checked Exception)");
}
UserService.java
@Transactional
public void addUser5(UserVO user) throws Exception {
log.info("addUser()..");
userMapper.insertUser(user);
userMapper.insertAuthorities(user);
throw new RuntimeException("Exception (Unchecked Exception)");
}
UserService.java
@Transactional(rollbackFor = Exception.class)
public void addUser6(UserVO user) throws Exception {
log.info("addUser()..");
userMapper.insertUser(user);
userMapper.insertAuthorities(user);
throw new Exception("Exception (Checked Exception)");
}