관심쟁이 영호

[Spring Boot 기초] Dummy데이터 넣기, 람다식, IllegalException 본문

Bank-End/Spring Boot

[Spring Boot 기초] Dummy데이터 넣기, 람다식, IllegalException

관심쟁이 영호 2021. 4. 24. 02:28
반응형

오늘은 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형태로 변환하여 리턴한다.

 

 

300x250
Comments