Spring(37)
-
[김영한님 스프링 핵심 원리] 빈의 생명 주기와 콜백
먼저, 빈의 생명 주기 중 객체의 초기화와 종료 작업을 공부하기 위해, 애플리케이션에서 외부 네트워크에 연결하는 객체를 만들어야 한다고 가정해보자! 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.02 -
[김영한님 - 스프링 핵심 원리] 생성자 주입을 사용해야하는 이유
의존관계를 주입하는 방법에는 4가지가 있다. 그 중 주로 사용하는 것은 생성자 주입이고, 가끔 사용하는 것은 수정자 주입(setter 주입)이다. 이번 포스팅에서는 생성자 주입과 수정자 주입 그리고 생성자 주입을 써야하는 이유에 대해서 알아보도록 하겠습니다. 생성자 주입 @Service public class BoardServiceImpl implements BoardService { private final BoardRepository boardRepository; @Autowired public BoardServiceImpl(BoardRepository boardRepository) { this.boardRepository = boardRepository; } ... } 생성자를 통해 의존관계를 주입..
2022.11.01 -
@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.07 -
[김영한님 - 스프링의 핵심원리] 컴포넌트 스캔
컴포넌트 스캔 지금까지 스프링 빈을 등록할 때는 자바의 코드의 @Bean 어노테이션을 사용해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 등록할 스프링 빈이 적다면 괜찮겠지만, 많으면 상당히 번거롭다. 그래서 스프링에서는 @ComponentScan이라는 기능을 제공한다. @Configuration @ComponentScan public class AutoAppConfig { } @ComponentScan은 @Component가 붙은 클래스를 스캔해서 자동으로 스프링 빈으로 등록시켜준다. 그렇다면 탐색 위치와 기본 스캔 대상은 어떻게 될까?? 탐색 위치 @ComponentScan에는 basePackages라는 속성이 있는데 이는 탐색할 패키지의 시작 위치를 지정한다. default값은 @Compone..
2022.10.02