Spring 프로젝트를 진행하면서 컴포넌트 내부에서 URL을 요청해야하는 경우가 생긴다. Spring에서는 Http 요청을 간단하게 이용할 수 있도록 Blocking I/O 기반의 RestTemplate, Non-Blocking I/O 기반의 WebClient 모듈을 제공한다. | RestTemplate 예제 SampleController.java package com.kyhslam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SampleController { @GetMapping..
쿼리 메소드는 스프링데이터 JPA의 핵심적인 기능 중 하나로 메소드 이름으로 쿼리를 생성할 수 있다는 장점이 있다. 메소드 이름으로 쿼리를 생성하기 위해 인터페이스에서 사용할 사용자 쿼리 메소드를 정의해 준다. 방식 : Collection findBy + 속성이름(속성타입) 기존의 Board 를 활용한 데이터 조회 예제 fidBy를 이용한 컬럼 조회 like 구문 and or 처리 부등호 order by package com.kyhslam.persistence; import java.util.Collection; import java.util.List; import org.springframework.data.repository.CrudRepository; import com.kyhslam.domain...
데이터 수정 테스트 코드 package com.kyhslam; import java.util.Optional; import java.util.stream.Stream; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.kyhslam.domain.Board; import com.kyhslam.persistence..
스프링 Data JPA는 기본적으로 Hibernate라는 JPA 구현체를 사용한다. Hibernate는 내부적으로 지정되는 DB에 맞게 SQL문을 생성하는 Dialect(방언)이 존재한다 Dialect는 Hibernate가 다양한 데이터베이스를 처리하기 위해 각 데이터베이스마다 다른 SQL문법을 처리하기 위해 존재하는 것이다. JPA를 통해 호출하면 설정된 데이터베이스에 맞게 SQL문이 생성되는데 이 역할을 하는 존재를 Dialect라고 한다. 내부적으로는 OracleDialect, MySQLDialect 같은 클래스들이 다수 존재한다. 참고로 application.properties에 데이터베이스의 종류를 지정하면 기본적으로 해당 데이터베이스에 맞는 Dialect가 지정되지만 특정 버전을 명시해 줄 수..
게시판 엔티티 생성 package com.kyhslam.domain; import java.sql.Timestamp; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; @Entity @Table(name="tbl_boards") public class Board {..
| application.properties 연결정보 입력 spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver spring.datasource.url=jdbc:oracle:thin:@10.110.15.57/PLMDEV2 spring.datasource.username=wcadmin spring.datasource.password=wcadmin spring.jpa.hibernate.ddl-auto=create spring.jpa.generate-ddl=false spring.jpa.show-sql=true spring.jpa.database=oracle logging.level.org.hibernate=info spring.jpa.dat..
| PostgreSQL 도커 띄우기 - 윈도우 PostgreSQL 이미지 실행 docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=kyhslam -e POSTGRES_DB=springboot --name postgres_boot -d postgres 실행 확인 실행된 도커의 bash shell에 접속 docker exec -i -t postgres_boot bash postgres로 유저를 바꾸고 kyhslam 계정으로 접속 su - postgres psql springboot -U kyhslam 또는 psql --username kyhslam --dbname springboot Database 목록조회 ## 릴레이션 리스트 \l ## ..
스프링 부트 ExceptionHandler 스프링부트에서 ExceptionHandler를 기본적으로 등록하여 Exception을 처리하고 있다. 기본 예외 처리기는 스프링에서 자동적으로 등록하는 BasicErrorController에서 관리한다.(에러 발생 시 JSON 형식으로 리턴한다) 커스텀 Exception 핸들러, 커스텁 Exception 클래스를 만들어서 예외를 처리 할 수 있다. Http Status 코드에 맞게 예외 발생 시 html 문서를 클라이언트에게 전송할 수 있다. 소스코드 package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfig..
HtmlUnit 이란? HtmlUnit은 프로그래밍적으로 HTML 사이트와 상호작용할 수 있게하는 자바 오픈소스 이다. 즉 Html에 특화되어 있는 테스트라고 생각하면 된다. 테스트 프레임워크로서 생각할 수 있지만 브라우저와 프로그래밍적으로 상호작용 할 수 있게하는 확장된 개념으로 생각하는 것이 좋다. 스프링4 이후에 스프링에 통합되면서 MVC 테스트(특히 템플릿 뷰 테스트) 때 유용하게 쓰인다. http://htmlunit.sourceforge.net/ 공식 사이트를 참고하면 좋다. http://htmlunit.sourceforge.net/gettingStarted.html 본인의 취향에 맞게 MockMvc를 쓸지 둘다 쓸지 결정해서 사용하면 된다. HtmlUnit사용을 위해 의존성을 추가해 줘야 된다..
스프링 부트가 자동설정을 지원하는 템플릿 엔진 FreeMarker Groovy Thymeleaf Mustache Jsp 권장하지 않는 이유 Jar 패키징 할때는 동작하지 않고, war로 패미징을 해야한다. Undertow는 JSP를 지원하지 않는다. (JBOSS에서 지원하는 서블릿 엔진이다) jsp는 서블릿엔진이 템플릿을 완성시킨다. 학습 및 참고 URL https://www.thymeleaf.org/ https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html Getting started with the Standard dialects in 5 minutes - Thymeleaf Getting started with the Standard d..
스프링 웹 MVC 인덱스 페이지 웰컴 페이지 : 웹 애플리케이션의 root(/) 로 요청했을 때 보여주는 페이지이다. index.html을 만들고 resources/static/ 안에 두면 root(/) 요청 시 애플리케이션이 해당 html 파일을 반환한다. index.html 웰컴!!!! 스프링 부트 http://localhost:8080 스프링 파비콘(favicon.ico) 설정 *resource/static/ 아래 경로에 파비콘을 추가한다. 주의할 점은 파일명을 꼭 favicon.ico 로 해야한다. http://localhost:8080 요청시 응답 화면이다.
| 스프링 부트 정적 리소스 지원 스프링부트에서 정적리소스 지원할 때 URL의 root(/) 에 자동적으로 정적 리소스를 매핑할 수 있다. resource/static/hello.html Hello static resource http://localhost:8080/hello.html 로 연결 시 다음과 같이 브라우저에 출력 된다. | application.properties를 통한 정적 리소스 매핑 application.properties에 아래내용으로 설정 spring.mvc.static-path-pattern=/static/** http://localhost:8080/static/hello.html 로 static경로를 붙여 연결해야한다. | WebMvcConfigurer를 통한 정적 리소스 매핑 ..