일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링 부트
- spring
- db
- 스프링 부트 입문
- mybatis
- 스프링
- 생성자 주입
- thymeleaf
- @Configuration
- resultMap
- 스프링 빈
- jdbc
- 스프링 컨테이너
- Effective Java
- springboot
- 스프링 프레임워크
- assertThat
- Javascript
- kafka
- DI
- DIP
- JPA
- 스프링부트
- SQL
- 필드 주입
- java
- 싱글톤
- 스프링 부트 기본
- sqld
- assertThrows
- Today
- Total
목록분류 전체보기 (292)
선 조치 후 분석

회원 서비스 클래스를 만들어보자 회원 도메인과 리포지터리를 활용해서 실제 비즈니스 로직을 작성하는 패키지 생성 1. 회원가입 기능을 담당하는 메서드 생성 - Join 기존에 MemoryMemberRepository에서 IllegalStateException : Controller에서 @RequestMapping의 값이 중복되어 나타나는 에러! 즉, 중복된 이름을 받지 못하게 Service에서 처리! ※ Optional 사용할 때의 Tip : Optional을 바로 반환하는 것은 좋지 않다고 한다. 그래서 아래처럼 축약해서 사용하는 것을 권장한다고 한다. (기존에 이미 Optional로 반환 타입을 지정해두었기 때문에, memberRepository.findByName(member.getName())은 이..

회원 리포지토리 테스트 케이스 작성 만들었던 Repository가 정상 작동할까?라는 의문이 들기 마련이다. 이거를 검증하기 위해서 테스트 코드를 작성해서 검증해야 한다. 보통 main메서드 또는 Controller로 해당 기능을 검증하지만 이렇게 하면 반복적으로 하기에는 시간과 노력이 많이 들고 어렵다고 한다. 그래서 Junit이라는 프레임워크로 테스트 코드를 작성해서 테스트 코드를 실행하는 방법이 있다. 1. Boolean으로 True, False 확인 - Save메서드 검증 하지만, 글자로 보는 게 불편하다면, Assertions(org.junit.jupiter.api)을 사용해서도 테스트 결과가 파악 가능하다. 2. Assertions(org.junit.jupiter.api) - Save메서드 검..
회원 도메인과 리포지터리 만들기 + 람다식이란? + NPE를 방지해주는 Optional 클래스 1. 회원 객체(Member) package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 2. MemberRepository package hello.hellospring.repository..

비즈니스 요구사항 정리 데이터 : 회원ID , 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음 (가상의 시나리오) 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 도메인 객체를 갖고 핵심 비즈니스 로직 구현 (ex : 회원ID 중복가입 방지) 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (ex : 회원, 주문, 쿠폰 등등 주로 DB에 저장하고 관리됨) 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB, NoSQL등등 다양한 저장소를 고민중인 상황으로 가정 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 구체적인 ..

웹을 제작하는데 있어서 정적 컨텐츠를 제외하고는 이 2가지가 있다고 합니다. 1. 템플릿엔진을 통해서 화면을 랜더링해서 HTML을 웹브라우저에 넘겨주는 방식 2. API 사용하는 방식 => 객체를 반환하는 방식 (객체를 JSON으로 반환) @GetMapping("hello-string") @ResponseBody // HTTP 헤더, 바디부에서 바디부에 직접 넣어주겠다는 의미 public String helloString(@RequestParam("name") String name) { return "hello " + name; // 위에랑 다른 점은, View가 없이 그대로 내려간다. } @ResponseBody 는 HTML의 Body부에 직접 넣어주겠다라는 의미라서, 소스 코드를 봐도 Body부만 표..

MVC : Model, View, Controller 과거에는 View와 Controller가 분리되어 있지않고, View에서 다 처리(JSP사용해서) 하는 'Model1' 방식이었다. MVC처럼 나눠주는 이유는, 각각의 역할이 있다. Controller - 비즈니스 로직, 서버와 관련된 일을 처리하는데 집중 View - 화면을 그리는데에 모든 역량을 집중 Thymeleaf의 장점 : 서버없이 HTML을 오픈해서 볼 수 있다. http://localhost:8080/hello-mvc을 URL에 치고 들어가면 아래와 같이 에러가 발생한다. @GetMapping("hello-mvc") public String helloMvc(@RequestParam(name = "name", required=true) St..