본문 바로가기

스터디/Spring37

[김영한님 스프링 핵심 원리] 빈의 생명 주기와 콜백 먼저, 빈의 생명 주기 중 객체의 초기화와 종료 작업을 공부하기 위해, 애플리케이션에서 외부 네트워크에 연결하는 객체를 만들어야 한다고 가정해보자! public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출 = " + url); connect(); call("초기화 연결 메세지"); } public void setUrl(String url){ this.url = url; } // 서비스 시작시 호출 public void connect(){ System.out.println("connect: " + url); } public void call(String message){ System... 2022. 11. 2.
[김영한님 - 스프링 핵심 원리] 생성자 주입을 사용해야하는 이유 의존관계를 주입하는 방법에는 4가지가 있다. 그 중 주로 사용하는 것은 생성자 주입이고, 가끔 사용하는 것은 수정자 주입(setter 주입)이다. 이번 포스팅에서는 생성자 주입과 수정자 주입 그리고 생성자 주입을 써야하는 이유에 대해서 알아보도록 하겠습니다. 생성자 주입 @Service public class BoardServiceImpl implements BoardService { private final BoardRepository boardRepository; @Autowired public BoardServiceImpl(BoardRepository boardRepository) { this.boardRepository = boardRepository; } ... } 생성자를 통해 의존관계를 주입.. 2022. 11. 1.
@PutMapping , @DeleteMapping 사용 방법 RestAPI를 공부한 후 프로젝트에 적용해보고자하는 데 시작하자마자 벽을 만났다.. 상황 : RestAPI를 적용한 게시판 중 게시판 '수정' 메소드가 실행이 안 되는 상황 @PutMapping("/{no}") public String updateBoard(@PathVariable("no") Integer boardId,@ModelAttribute BoardForm boardForm){ boardService.updateBoard(boardForm,boardId); return "redirect:" +boardId; } 제목 작성자 내용 작성일 공개범위모두에게 공개장애학우들에게만 공개 글 수정 글 수정 누른 후 URL: http://localhost:8080/boards/1?title=%40postMa.. 2022. 10. 30.
Postman사용 방법 GET 메소드 GET 요청은 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송합니다 Query Params를 이용한다. 쿼리스트링 : URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터 POST 메소드 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 한다. Content-type : 요청시 요청하는 자원의 형식을 명시하기 위해 헤더에 실리는 정보 None : Body에 보낼 값이 없을 때 사용한다. form-data : Multipart Form을 이야기하는 것으로, ASCII 문자값과 함께 바이너리 데이터(예를 들면, 이미지나 영상 파일)을 전송할 때 사용한다.(텍스트 + 파일) x-www-urlencoded : W3C에서 기본 content t.. 2022. 10. 10.
Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDateTime' for property 'localDateTime' 에러 해결 문제 인식 로그에 나온 WARN 중에 중요한 문장만 선별해서 아래에 적어보겠습니다. org.springframework.validation.BeanPropertyBindingResult: 1 errorsField error in object 'boardForm' on field 'localDateTime': rejected value [2022-10-07T22:42] [typeMismatch.boardForm.localDateTime,typeMismatch.localDateTime,typeMismatch.java.time.LocalDateTime,typeMismatch] Failed to convert property value of type 'java.lang.String' to required typ.. 2022. 10. 7.
[김영한님 - 스프링의 핵심원리] 컴포넌트 스캔 컴포넌트 스캔 지금까지 스프링 빈을 등록할 때는 자바의 코드의 @Bean 어노테이션을 사용해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 등록할 스프링 빈이 적다면 괜찮겠지만, 많으면 상당히 번거롭다. 그래서 스프링에서는 @ComponentScan이라는 기능을 제공한다. @Configuration @ComponentScan public class AutoAppConfig { } @ComponentScan은 @Component가 붙은 클래스를 스캔해서 자동으로 스프링 빈으로 등록시켜준다. 그렇다면 탐색 위치와 기본 스캔 대상은 어떻게 될까?? 탐색 위치 @ComponentScan에는 basePackages라는 속성이 있는데 이는 탐색할 패키지의 시작 위치를 지정한다. default값은 @Compone.. 2022. 10. 2.
728x90