관심쟁이 영호
[Spring Boot 기초] Dummy데이터 넣기, 람다식, IllegalException 본문
오늘은 Dummy Data를 넣어서
테스트를 해볼 예정이다.
"com.cos.blog.test" pakage를 새로 만든다.
그리고 DummyControllerTest 클래스를 새로 만들어주자.
그리고 다음 코드를 살펴보자.
// UserRepository.class
//@Repository 생략가능
public interface UserRepository extends JpaRepository<User, Integer>{ //User를 다루는 것, Primary key는 integer야
}
JpaRepository<User, Integer>을 상속받는다.
이렇게 상속받게되면,
필요한 메서드들을 상속받을 수 있다.
예를 들어, findOne, findAll 등등
User 테이블에 접근하여 가지고오는 모든 행위를 상속받을 수 있다.
이제 DummyControllerTest.class를 살펴보자
// DummyControllerTest.class
// html이 아니라 데이터를 리턴해주는 컨트롤러
//변환 -> json해야함
@RestController
public class DummyControllerTest {
@Autowired
private UserRepository userRepository;
@GetMapping("/dummy/users")
public List<User> list(){
return userRepository.findAll();
}
/*
* 페이지로 살펴보기 -> 에러있음
@GetMapping("/dummy/user/page")
public Page<User> pageList(@PageableDefault(size=2, sort ="id", direction = Sort.Direction.DESC) Pageable pageable){
Page<User> users = userRepository.findAll(pageable);
return users;
}
*/
//{id} 주소로 파라미터를 전달 받을 수 있음
@GetMapping("/dummy/user/{id}")
public User detail(@PathVariable int id) throws IllegalAccessException {
//user/4를 찾으면 내가 데이터베이스에서 못찾아오면 user가 null이다.
//그럼 return null이 된다.
//그래서 Optional로 User객체를 감싸서 가지고 온다. null의 판단을 위해서
/*
() ->{
return new IllegalArgumentException("해당 사용자는 없습니다.");
}
*/
User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalAccessException>() {
@Override
public IllegalAccessException get() {
// TODO Auto-generated method stub
return new IllegalAccessException("해당 유저는 없습니다. id :" + id);
}
});
return user;
}
@PostMapping("/dummy/join")
public String join(User user) { // key = value 약속된 규칙으로 온다.
user.setRole(RoleType.USER);
userRepository.save(user);
return "가입 완료!";
}
}
- @RestController 어노테이션으로 해당 클래스가 Controller클래스이고, 데이터를 주고받는다고 명시해준다.
- User테이블에 접근을 하기 위해서 Repository를 생성해준다. 그리고 @Autowired를 통해서 주입받는다.
- @GetMapping(/dummy/user/{id}의 뜻은 해당하는 주소값에 {id}의 값에 따라 다른 값을 리턴해주기 위함이다.
findById를 통해서 넘어오는 id값을 통해서 찾아주고, 찾지 못하면?
orElseThrow를 통해 예외를 발생시켜야한다. 예외 내용은 IllegalAccessException이다.
오버라이드를해서 예외클래스를 생성해준다.
이것을 람다식으로 표시할 수 있는데, 익명 클래스로 new를 해줄 때, Supplier와 같은 타입을 생각하기가 귀찮고 힘들다. 그래서 람다식을 사용한다. new Supplier<IllegalException>() 을 ()으로 한방 정리해준다.
() -> { return new IllegalException("해당하는 회원이 없습니다."} 이렇게 해주면 별로 생각안하고 할 수 있다.
하지만 너무 날로 먹는거같으니, 배우는 단계에서는 제대로 코드를 쓰도록하고, 람다식을 습관화해보자.
- PostMapping을 통해서 회원가입을 해준다.
- /dummy/users를 통해서 모든 데이터를 받아오는 findAll로 List<User>을 받아 리턴해준다. 이렇게 리턴을 하게 되면, JackSon MessageConverter 라이브러리가 실행되어, 자바객체를 Json형태로 변환하여 리턴한다.
'Bank-End > Spring Boot' 카테고리의 다른 글
[Spring Boot] Bean Validation 적용하기 (0) | 2021.08.03 |
---|---|
[Spring Boot 기초] Ajax란? ㅣ Ajax를 사용하는 2가지 이유 (0) | 2021.04.28 |
[Spring Boot 기초] 연관관계, 주인, 스프링 핵심! (0) | 2021.04.23 |
[Spring Boot 기초] Board Table 생성 (0) | 2021.04.21 |
[Spring Boot 기초] ㅣ 영속성 컨텍스트란? (0) | 2021.04.08 |