백기선(인프런 강의)
-
스프링 데이터 2부: 인메모리 데이터 베이스백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 7. 3. 09:02
지원하는 인-메모리 데이터 베이스 H2 (추천, 콘솔 때문에...) HSQL Derby Spring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 빈을 설정 해줍니다. DataSource JdbcTemplate 인-메모리 데이터베이스 기본 연결 정보 확인하는 방법 URL: “testdb” username: “sa” password: “” H2 콘솔 사용하는 방법 spring-boot-devtools를 추가하거나... application.properties에 spring.h2.console.enabled=true 만 추가. /h2-console로 접속 (이 path도 바꿀 수 있음) 예제 프로젝트 생성 application.proeprties spring.h2.console.enabled=true 설..
-
스프링 데이터 1부 : 소개백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 7. 3. 08:34
SQL DB NoSQL 인메모리 데이터베이스 지원 DataSource 설정 DBCP 설정 JDBC 사용하기 스프링 데이터 JPA 사용하기 jOOQ 사용하기 데이터베이스 초기화 데이터베이스 마이그레이션 툴 연동하기 Redis (Key/Value) MongoDB (Document) Neo4J (Graph) Gemfire (IMDG) Solr (Search) Elasticsearch (Search & Analytics) Cassandra Couchbase LDAP InfluxDB
-
CORS(Cross-Origin Resource Sharing)백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 6. 24. 08:58
CORS(Cross-Origin Resource Sharing) Same_Origin Policy와 다름 같은 Origin에만 요청을 보낼 수 있다. 동일 출처 정책(same-origin policy)은 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용하는 것을 제한하는 중요한 보안 방식 Cross-Origin Resource Sharing 서로 다른 Origin끼리 리소스를 공유할 수 있다. Origin이란? URI 스키마( http, https) hostname(whieship.me, localhost) 포트(8080, 18080)
-
HATEOAS(Hypermedia As The Engine Of Application State)백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 6. 22. 12:11
Hypermedia As The Engine Of Application State Rest API를 만들 때, 서버 현재 리소스와 연관된 링크 정보를 클라이언트에게 제공 클라이언트 연관된 링크 정보를 바탕으로 리소스에 접근한다. EntityModel에 추가해서 리턴하는 식으로 구현하고, 클라이언트도 그걸 사용하는 방식이 Hateoas이다. ObjectMapper 제공하는 리소스를 Json으로 변환할 때 사용하는 인터페이스 객체를 Json으로 변환하거나 Json을 객체로 변환할 때 사용 LinkDiscovers XPath를 확장해서 만든 HATEOAS용 클라이언트 API rest api로 다른쪽 서버 api를 요청해서 받을 때, hateoas를 지원한다면 메소드를 이용해서 self에 해당하는 링크 정보를 ..
-
ExceptionHandler백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 16. 20:38
스프링 @MVC 예외 처리 방법 @ControllerAdvice @ExceptionHandler 스프링 부트가 제공하는 기본 예외 처리기 BasicErrorController 상속받아 사용 HTML과 JSON 응답 지원 커스터마이징 방법 ErrorController 구현 커스텀 에러 페이지 상태 코드 값에 따라 에러 페이지 보여주기 src/main/resources/static|template/error/ 404.html 5xx.html ErrorViewResolver 구현 예제 public class AppError { private String message; private String resaon; public String getMessage() { return message; } public vo..
-
클래스의 프록시백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 16. 20:19
자바에서는 다이내믹 프록시를 인터페이스로 만들어야 하지만 서브 클래스를 만들 수 있는 라이브러리를 사용하여 프록시를 만들 수 있다. CGlib https://github.com/cglib/cglib/wiki 스프링, 하이버네이트가 사용하는 라이브러리 버전 호환성이 좋치 않아서 서로 다른 라이브러리 내부에 내장된 형태로 제공되기도 한다. 예제 pom.xml 추가 cglib cglib 3.3.0 public class Book { String title = "clean code"; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } public class BookService..
-
다이내믹 프록시백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 16. 19:27
다이나믹 프록시란? 런타임에 인터페이스 또는 클래스의 프록시 인스턴스 또는 클래스를 만들어 사용하는 프로그래밍 기법 Java는 Interface가 아닌 class타입으로 다이나믹 프록시를 만들 수가 없다. https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html 다이나믹 프록시 사용처 스프링 데이터 JPA 스프링 AOP Mockito 하이버네이트 lazy initialzation 프록시 인스턴스 만들기 Object Proxy.newProxyInstance(ClassLoader, Interfaces, InvocationHandler) 예제 package com.example.demo; import java.lang.reflec..
-
리플렉션 정리백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 14. 17:16
리플렉션 사용시 주의할 것 지나친 사용은 성능 이슈를 야기할 수 있다. 반드시 필요한 경우에만 사용할 것 컴파일 타임에 확인되지 않고 런타임 시에만 발생하는 문제를 만들 가능성이 있다. 접근 지시자를 무시할 수 있다. 스프링 의존성 주입 MVC 뷰에서 넘어온 데이터를 객체에 바인딩 할 때 하이버네이트 @Entity 클래스에 Setter가 없다면 리플렉션을 사용한다. JUnit https://junit.org/junit5/docs/5.0.3/api/org/junit/platform/commons/util/ReflectionUtils.html 참고 https://docs.oracle.com/javase/tutorial/reflect/index.html