[spring] @PostConstruct 와 @PreDestroy 어노테이션
·
Spring
스프링빈의 생명주기 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작시점에 연결을 하고, 종료시점에 연결을 끊는 작업을 진행하기위해서는 객체의 초기화와 종료작업이 필요하다. 빈 생명주기 콜백은 의존관계주입이 완료되거나 종료되는 시점에 스프링빈안의 메서드를 호출해주는 기능이다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 사용 -> 사용 -> 소멸전 콜백 -> 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 바로 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 @PostConstruct @PostConstruct 는 WAS 가 뜰 때 bean이 생성된 다음 딱 한번만 실행됨이 보장되기에 어떠한 이유로..
[스프링 MVC 1편] - HttpServletResponse
·
Spring
HttpServletResponse request가 웹브라우저에서 어떠한 정보를 받는것이라면 response는 받은 데이터를 정제하여 웹브라우저로 넘겨줄때 사용한다. HttpServletResponse 역할 HTTP 응답 메시지 생성 HTTP 응답코드 지정 헤더 생성 바디 생성 HttpServletResponse - 기본 사용법 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletRespon..
[스프링 MVC 1편] - 서블릿 HttpServletRequest(http요청데이터)
·
Spring
HTTP 요청 데이터 대표적으로 3가지 방법 GET - 쿼리 파라미터 /url?username=hello&age=20 url의 쿼리 파라미터에 데이터를 포함해서 전달 ex ) 검색 , 필터 , 페이징에서 많이 사용 POST - HTML form html form을 이용하여 전달 메시지 바디에 쿼리 파라미터 형식으로 전달(username=hello&age=20) content-type: application/x-www-form-urlencoded HTTP message body에 담아서 전달 HTTP API에서 주로 사용(JSON 이용) POST , PUT , PATCH GET 쿼리 파라미터 http://localhost:8080/request-param?username=hello&age=20 와 같이 u..
[스프링 MVC 1편] - 서블릿 HttpServletRequest(startLine, header)
·
Spring
HttpServletRequest HttpServletRequest 역할 웹브라우저에서 들어온 Http요청메시지를 직접 파싱하기는 너무 반복적인 귀찮은 일이므로, 개발자대신 서블릿이 대신 파싱하여 HttpServletRequest객체에 담아 제공한다. HTTP 요청 메시지에는 다음과같은 정보가 담겨있다. START LINE HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라미터 형식 조회 message body 데이터 직접 조회 HttpServletRequest - 기본 사용법 start-line 정보 private void printStartLine(HttpServletRequest request) { System.out.println("request.getMeth..
[스프링 MVC 1편] - 서블릿
·
Spring
Hello 서블릿 더보기 참고 서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고,그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음, 톰캣 서버를 실행하면 된다. 하지만 이 과정은 매우 번거롭다. > 스프링 부트는 톰캣 서버를 내장하고 있으므로, 톰캣 서버 설치 없이 편리하게 서블릿 코드를 실행할 수 있다. 스프링 부트 서블릿 환경 구성 @ServletComponentScan : 현재 폴더를 기준으로 하위의 모든 폴더를 뒤져 서블릿을 찾아 실행시켜줌! (ComponentScan이 Component(스프링빈)을 찾아 스프링 컨테이너에 등록하는것과 비슷) @ServletComponentScan @SpringBootApplication public class ServletApplication { ..
[스프링 MVC 1편] - 웹 애플리케이션 이해
·
Spring
웹 애플리케이션 이해 모든 것이 HTTP 모든 정보를 HTTP메시지에 담아 주고 받음 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 웹 서버(Web Server) HTTP기반으로 동작 정적 리소스(HTML , CSS , JS) 제공 EX) NGINX , APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP기반으로 동작 웹 서버(비즈니스 로직) + 정적 리소스 실행 가능 동적 HTML , HTTP API(JSON) 서블릿 , JSP , 스프링 MVC EX) Tomcat 웹 서버 vs 웹 애플리케이션 서버(WAS) 웹 시스템 구성 - WAS, DB 웹 서버는 정적 리소스(파일), WAS는 애플리케..
[spring] 게시판 CRUD 만들기
·
Spring
게시판 CRUD 만들기 JPA 반복적인 CRUD SQL을 처리해준다. SQL이 아닌 객체중심의 개발이 가능하도록 해준다. //의존성 등록 dependecies{ implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } CRUD작성 게시물 Entity 실제 DB의 테이블과 매칭될 클래스이며 보통 Entity클래스라 부름 , JPA를 사용하면 DB데이터에 작업할 경우 실제 데이터보다는 Entity클래스의 수정을 통해 작업한다. @Getter //Entity클래스는 DB와 맞닿아있는 중요한 클래스이기때문에 Setter 절대 사용하지 않기 @NoArgsConstructor @Entity public class Posts extends Ba..
JPA Auditing기능이란?
·
Spring
JPA Auditing기능 JPA Auditing이란? Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있습니다. 결국 공통적으로 가지고 있다는것은 코드가 중복된다는 말과 같습니다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update를 하는 경우 매번 시간 데이터를 입력하여 주어야 하는데, audit을 이용하면 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어주게 됩니다. build.grade에 의존성 추가 dependencies { compile('org.springframework.boot:spring-boot-s..