일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- @Aspect
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch9
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch2
- 2024 정보처리기사 수제비 실기
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch13
- 스프링 mvc2 - 로그인 처리
- 게시글 목록 api
- 자바의 정석 기초편 ch6
- 스프링 mvc2 - 검증
- 자바 기본편 - 다형성
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch4
- 스프링 db2 - 데이터 접근 기술
- jpa - 객체지향 쿼리 언어
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch14
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch3
- 스프링 입문(무료)
- 자바의 정석 기초편 ch11
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch7
- 스프링 db1 - 스프링과 문제 해결
- Today
- Total
목록2024/11 (21)
나구리의 개발공부기록
출처 : 인프런 - 스프링 부트 - 핵심 원리와 활용(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 라이브러리 직접 관리1) 라이브러리 관리의 어려움프로젝트를 처음 시작하면 어떤 라이브러리들을 사용할지 고민하고 선택해야함스프링 Web, 내장 톰캣, JSON 처리기, 로거 등등 수많은 라이브러리를 선택해야하며 버전까지도 고민해야함더 심각한 문제는 각 라이브러리들끼리 호환이 잘 되는 버전도 있지만 잘 안되는 버전도 있음과거에는 이런 문제들 때문에 처음 프로젝트를 세팅하는데 상당히 많은 시간을 소비했음스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 기능들을 제공함2) 라이브러리 직접 관리(1) 과거의 라이브러리 관리 방법직접 라이브러리를 하나하나 고르고 설정하는..
출처 : 인프런 - 스프링 부트 - 핵심 원리와 활용(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. WAR 배포 방식의 단점(1) 웹 애플리케이션의 배포 과정1. 톰캣 같은 웹 애플리케이션 서버(WAS)를 별도로 설치2. 애플리케이션 코드를 WAR로 빌드3. 빌드한 WAR 파일을 WAS에 배포애플리케이션을 구동하고 싶으면 웹 애플리케이션 서버를 별도로 설치해야하는 구조이며 과거에는 이렇게 웹 애플리케이션 서버와 웹 애플리케이션 빌드 파일(WAR)이 분리되어 있는것이 당연한 구조였음(2) 단점톰캣 같은 WAS를 별도로 설치해야하는 번거로움이 있음단순한 자바라면 별도의 설정을 고민하지 않고 main()메서드만 실행하면 되는데, 웹 애플리케이션은 WAS를 실행하고 WAR와 연..
출처 : 인프런 - 스프링 부트 - 핵심 원리와 활용(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 웹 서버와 스프링 부트 소개1) 외장 서버 VS 내장 서버(1) 전통적인 방식과거에는 자바로 웹 애플리케이션을 개발할 때 먼저 서버에 톰캣 같은 WAS(웹 애플리케이션 서버)를 설치했음그리고 WAS에서 동작하도록 서블릿 스펙에 맞추어 코드를 작성하고 WAR형식으로 빌드해서 war 파일을 만든 후 WAS에 전달하여 배포하는 방식으로 전체 개발 주기로 동작하였음이런 방식은 WAS 기반 위에서 개발하고 실행해야하고 IDE같은 개발 환경에서도 WAS와 연동해서 실행되도록 복잡한 추가 설정이 필요함(2) 최근 방식최근에는 스프링 부트가 내장 톰캣을 포함하고 있어 애플리케이션 코드 ..
출처 : 인프런 - 스프링 부트 - 핵심 원리와 활용(유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 스프링 프레임워크의 등장https://nagul2.tistory.com/123스프링 기본편에서 다뤘던 내용이 중복되어있으므로 추가적인 내용으로 판단되는 것만 기술1) 스프링 프레임워크(1) EJB를 대체한 스프링DI 컨테이너, MVC, DB 접근 기술 등의 수많은 기능을 제공하고 다양한 문제를 해결다양한 라이브러리들 편리하게 사용할 수 있도록 통합개발자의 생산성이 높아짐, 사용범위 확대자바 생태계의 사실상 표준 프레임워크(2) 스프링 프레임워크 확대스프링과 그 생태계가 점점 커지고 기능도 점점 많아짐다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야함스프링으..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 프록시와 내부 호출 - 문제1) 문제점(1) 문제 설명스프링은 프록시 방식의 AOP를 사용하므로 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(target)을 호출해야 프록시에서 먼저 어드바이스를 호출하고 이후에 대상 객체를 호출함만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고 어드바이스도 호출되지 않음AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링빈으로 등록하여 의존관계 주입시에 항상 프록시 객체를 주입함프록시 객체가 주입되기 때문에 대상 객체를 직접 호출하는 문제는 일반적으로 발생하지 않음그러나 대상 객체의 내부에서 메서..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 예제만들기1) 예제@Trace 애노테이션으로 로그 출력@Retry 애노테이션으로 예외 발생시 재시도(1) ExamRepositoryexam패키지를 생성하여 작성save메서드가 5번 호출되면 1번은 예외가 발생하도록 적용한 저장소package hello.aop.exam;@Repositorypublic class ExamRepository { private static int seq = 0; /** * 5번중 1번이 실패하는 로직을 가상으로 적용 */ public String save(String itemId) { seq++; ..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 포인트컷 지시자1) 포인트컷 지시자(1) 포인트컷 표현식애스펙트J는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공하는데 이를 AspectJ pointcut expression 이라고 함애스펙트J가 제공하는 포인트컷 표현식이라는 뜻으로 줄여서 포인트컷 표현식이라고함2) 종류 및 요약 설명(1) execution메소드 실행 조인 포인트를 매칭스프링 AOP에서 가장 많이 사용하고 기능도 복잡함(2) within특정 타입 내의 조인 포인트를 매칭(3) args인자가 주어진 타입의 인스턴스 조인 포인트(4) target실행 객체의 클래스에 주어진 타입의 애노테이션이 있는 조인..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 프로젝트 생성 및 예제 프로젝트 만들기1) 프로젝트 생성 (1) ProjectGradleJava 17Spring Boot 3.3.5(2) MetadataGroup: helloArtifact: aopPackaging: Jar(3) DependenciesLombok스프링 부트로 프로젝트를 생성하면 스프링 프레임워크의 핵심 모듈들은 별도의 설정이 없어도 자동으로 추가됨(4) 설정 추가build.gradle에 아래의 코드를 추가하여 aop와 test에서 lombok을 사용할 수 있도록 설정// aop 설정implementation 'org.springframework.boot:spr..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. @Aspect 프록시 - 적용1) 적용스프링은 @Aspect애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어있는 어드바이저 생성 기능을 지원함직접 어드바이저를 만들었던 부분을 @AspectJ 애노테이션을 사용해서 생성** 참고@Aspect는 관점 지향 프로그래밍(AOP)을 가능하게 하는 AspectJ 프로젝트에서 제공하는 애노테이션이며 스프링은 이것을 차용해서 프록시를 통한 AOP를 가능하게 함AOP와 AspectJ 관련한 자세한 내용은 다음에 설명하며 지금은 프록시에 초점을 맞춰 이 애노테이션을 사용해서 스프링이 편리하게 프록시를 만들어 준다고 생각하면됨(1) L..
출처 : 인프런 - 스프링 핵심 원리 - 고급편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 빈 후처리기1) 소개(1) 일반적인 스프링 빈 등록@Bean이나 컴포넌트 스캔으로 스프링 빈을 등록하면 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록함이후에 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면됨(2) 빈 후처리기 - BeanPostProcessor스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶을 때 빈 후처리기를 사용빈 포스트 프로세서(BeanPostProcessor)를 번역하여 빈 후처리기라고 하며, 빈을 생성한 후에 이미지의 2번(등록)의 상황에서 무언가 처리하는 용도로 사용함빈..