Java & Spring
-
7장) 7.1 SQL과 DAO의 분리 ~ 7.2 인터페이스의 분리와 자기참조 빈Java & Spring/토비의 스프링 3.1 2021. 8. 6. 14:09
7장 스프링 핵심 기술의 응용 스프링의 모든 기술은 객체지향적인 언어의 장점을 적극적으로 활용해서 코드를 작성하도록 도와줌 앞서 학습한 3대 핵심기술인 IoC/DI, 서비스 추상화, AOP를 Application 개발에 활용해서 새로운 기능을 만들어보고, 스프링의 개발철학과 추구하는 가치, 스프링 사용자에게 요구되는 게 무엇인지 알아보자 7.1 SQL과 DAO의 분리 DAO에서 SQL 분리하기 반복적인 JDBC 작업 흐름은 템플릿, 트랜잭션과 예외처리 작업은 서비스 추상화와 AOP로 DAO로 부터 분리했다 DAO는 데이터를 가져오고 조작하는 작업의 인터페이스 역할 데이터 엑세스 로직이 바뀌지 않더라도 DB 테이블, 필드 이름과 SQL 문장의 변경이 일어나는 경우, 현재 구조에서는 DAO를 수정해야함 번거..
-
외부 통신 - (RestTemplate, AsyncRestTemplate, WebClient, HttpURLConnection, HttpClient ) 간략 정리Java & Spring/기타 2021. 7. 29. 17:11
RestTemplate Spring 3.0 부터 지원 Bolierplate code를 줄여줌 RestAPI를 사용해야하는 경우 적합 Multi-Thread & Blocking 방식 JDK HttpURLConnection, Apache Http Components 등과 같이 기본 HTTP 클라이언트 라이브러리를 통해 템플릿 메서드 API를 제공하는 HTTP 요청을 수행하는 동기식 client RestTemplate은 HTTP 메소드에 대한 시나리오를 제공하고, exchange와 excute 메소드를 제공 spring에서 5.0부터는 org.springframework.web.reactive.client를 사용하는 것을 권유 최신 API와 동기, 비동기, 스트리밍 시나리오를 지원 AsyncRestTempla..
-
6장) 6.6 트랜잭션 속성Java & Spring/토비의 스프링 3.1 2021. 7. 26. 14:27
6장 AOP 6.6 트랜잭션 속성 앞서 학습했던 PlatformTransactionManager로 대표되는 스프링의 트랜잭션 추상화 적용 중, 트랜잭션 매니저에서 트랜잭션을 가져올 때 사용한 DefaultTransactionDefinition 오브젝트의 용도에 대해 알아보자 6.6.1 트랜잭션 정의 더 이상 쪼갤 수 없는 최소 단위의 작업 트랜잭션 동작 방식 commit() rollback() 이 밖에도 트랜잭션 동작방식을 제어할 수 있는 조건이 존재 DefaultTransactionDefinition이 구현하고 있는 TransactionDefinition 인터페이스는 트랜잭션 동작 방식에 영향을 줄 수 있는 네 가지 속성을 정의하고 있음 트랜잭션 전파, 격리수준, 제한시간, 읽기전용 트랜잭션 전파 이미..
-
6장) 6.5 스프링 AOPJava & Spring/토비의 스프링 3.1 2021. 7. 23. 15:52
6장 AOP 부가기능 적용 후에 기존 설계 코드에 영향을 주지 않도록 제공돼야 함 다른 코드에서는 존재가 보이지 않지만, 메소드가 호출되는 과정에서 다이내믹하게 부가적인 기능을 제공 6.5.1 자동 프록시 생성 타깃 오브젝트마다 비슷한 내용의 ProxyFactoryBean 설정 정보 추가 부분이 남은 해결 과제 중복 문제의 접근 방법 JDBC API를 사용하는 DAO 코드 전략 패턴과 DI를 적용해서 템플릿과 콜백, 클라이언트로 나누어 해결 반복적인 위임 코드가 필요한 프록시 클래스 코드 다이내믹 프록시와 다이내믹 프록시 생성 팩토리 DI를 사용해서 런타임 코드 자동생성 기법으로 해결 반복적인 ProxyFactoryBean 설정 미해결 빈 후처리기를 이용한 자동 프록시 생성기 스프링은 컨테이너로서 제공하..
-
6장) 6.4 스프링의 프록시 팩토리 빈Java & Spring/토비의 스프링 3.1 2021. 7. 16. 18:22
6장 AOP 6.4 스프링의 프록시 팩토리 빈 ProxyFactoryBean 자바 JDK에서 제공하는 다이나믹 프록시 외에도 프록시를 만들도록 지원하는 다양한 기술 존재 스프링은 일관된 방법으로 프록시를 만들 수 있게 도와주는 추상 레이어 제공 프록시 오브젝트를 생성해주는 기술을 추상화한 팩토리 빈 제공 프록시를 생성하는 작업만 담당 부가기능은 MethodInterceptor 인터페이스를 구현해서 사용 InvocationHandler의 invoke() 는 타깃 오브젝트 정보를 제공하지 않아서, 자체적으로 타깃을 알고 있어야함 MethodInterceptor의 invoke()는 ProxyFactoryBean으로 부터 타깃 오브젝트 정보를 제공받음 타깃 오브젝트에 상관없이 독립적으로 만들어 질 수 있고, 다..
-
6장) 6.3 다이내믹 프록시와 팩토리 빈Java & Spring/토비의 스프링 3.1 2021. 7. 16. 18:06
6장 AOP 6.3 다이내믹 프록시와 팩토리 빈 프록시와 프록시 패턴, 데코레이터 패턴 프록시 트랜잭션은 비즈니스 로직과는 성격이 다르기 때문에 분리, 독립 UserServiceTx, UserServiceImpl 핵심 기능(비즈니스 로직)을 담은 클래스를 부가 기능을 가진 트랜잭션 클래스에서 이용 클라이언트가 핵심 기능을 가진 클래스를 직접 사용하지 않도록, 부가 기능을 담은 클래스가 핵심 기능인 것 처럼 위장 ~> 핵심 기능 클래스를 이용 실제 대상인 것 처럼 위장해서 요청을 받아주는 대리자 역할을 한다고 해서 프록시라고 부름 요청을 위임받아 실제 처리하는 오브젝트를 타깃 or 실체(real subject) 라고 부름 클라이언트 --> 프록시 --> 타깃 사용 목적 클라이언트가 타깃에 접근하는 것을 제..
-
HandlerMethodArgumentResolverJava & Spring/기본 개념 정리 2021. 7. 13. 12:25
HandlerMethodArgumentResolver 컨트롤러에서 파라미터를 바인딩 해주는 역할 요청 파라미터를 수정하거나 클래스 파라미터를 조작, 공통으로 쓸 파라미터를 바인딩 공통으로 수행할 작업을 수행한 후, Object를 반환해서 코드의 중복을 줄임 HandlerMethodArgumentResolver 인터페이스를 구현한 구현체를 WebMvcConfigurer 인터페이스 구현체의 addArgmuentResolver에 등록해서 사용 supportsParameter와 resolveArgument 2개의 메서드를 오버라이딩하여 구현 supportsParameter boolean 값으로 반환하는 메소드 요청으로 들어온 MethodParameter가 resolveArgument 수행이 필요한 경우 true..
-
Spring boot actuatorJava & Spring/기본 개념 정리 2021. 7. 13. 11:29
Spring boot actuator 엔드포인트로 HTTP나 JMX를 통해서 Application을 모니터링하고 관리하는 기능 제공 health, Auditing, beans, ... 종속성 추가 org.springframework.boot spring-boot-starter-actuator 제공하는 엔트포인트 ID Description auditevents 현재 실행중인 Applicaition의 audit Event를 보여준다. AuditEventRepository bean이 필요 beans 애플리케이션의 모든 Spring 빈 목록을 보여준다. caches 사용 가능한 캐시를 보여준다. conditions Configuration과 Auto-Configuration의 매칭 여부와 이유를 보여준다. co..