본문 바로가기

전체 글

(267)
AOP 정리3 # 예시로 시간을 측정 할 것이다.시간을 측정하고 싶은 메소드들에 @EXAMPLEANNO 를 붙여준다. # annotaion EXAMPLEANNO 클래스 를 생성하고, @Target을 붙여준다. ---------------------------------------------------------------------------------------------- # ASPECT 정의하기 - 클래스를 생성하여 @Asepct 어노테이션을 추가하여 Aspect를 생성한다. 스프링은 자동으로 이 클래스를 Spring AOP 설정에 반영한다. # PointCut 정의하기 - JointPoint (결합점) , Advice 를 설정 ㄴ Advice 가 언제 실행되는지 정하는 방법이다. - @Around( @annot..
AOP 핵심비즈니스에 붙일 어노테이션 사용해서 만들기 1. 컨트롤러에 있는 함수들에 @LogExecutionTime 어노테이션을 붙여준다. (핵심비지니스로직) 2. create annotation 해준다. 3.@LogExecutionTime 을 만들것이다. 4. 어노테이션 만들때 @Target 지정 , @Retention 붙이기 //어노테이션 정보 언제까지유지할것인가 5-1. 이제되는가? 아니다. 어노테이션은 주석이랑 같다 그냥 주석이다. 이제 이거를 읽어서 처리해줄 로직코드가 필요하다. 5-2 그것이 Aspect 이다. (porxy패턴기반으로 실행된다.) @Component //Bean으로 등록되어야 하기 떄문에. @Aspect //advice + pointcut이 있다. public class LogAspect{ /**Advice등록**/ Logger ..
AOP란? (개념 + ProxyFactory 사용하여 설정) 스프링에서는 낮은 결합도, 높은 응집도가 필요하다. IOC는 낮은 결합도를 위한 것이라면, AOP는 높은 응집도를 위한 거이다. Spring 에는 triangle 이라는 3대 개념이 있다.IOC AOP PSA 세가지를 제공해주는 spring triangle이라는 개념이 있다. ====================================================================== WHAT? Aspect Oriented Programming //관점 지향 프로그래밍 공통된 기능과 공통되지않은 기능(비즈니스 로직) 을 구분하고, 공통된 기능은 비즈니스로직과 분리하여 밖에서 관리해준다. =========================================================..
httpclient cannot be resolved to a type _ httpclientbuilder cannot be.... 에러 sts에서 자동 import안될때 방법1 ) gradle 에 다음을 추가한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.apache.httpcomponents:httpclient:4.5.7' implementation 'commons-collections:commons-collections' implementation 'org.springframework.boot:spring-boot-configuration-processor' providedRuntime 'org.sprin..
git 기본 사용방법 1. git add * 2. git commit -m "" option) 다른 저장소사용하고 싶은경우. git remote remove origin 3. git remote add origin 4. git push origin ========================================= 로컬 저장소에 브랜치 생성하기 git branch 브랜치 이름 / /따옴표 없이 로컬 저장소에서 브랜치 이동 git checkoiut -b 브랜치이름 // 따옴표 없이 브랜치 생성된거 확인해보기. git branch 원격(remote) 저장소에 브랜치 생성하기 git push origin 브랜치 이름 local 저장소와 remote저장소의 branch 연동시키기 git branch --set-upstream..
No converter for [class com.example.Model.ResponseNaverMovie] with preset Content-Type 'application/json;charset=UTF-8' 에러 No converter for [class com.example.Model.***model] with preset Content-Type 'application/json;charset=UTF-8' >[class com.example.Model.***model] 클래스에 @DATA 어노테이션붙여주기 // data어노테이션은 lombok검색
Spring Lazy Initialization >스프링은 애플리케이션이 실행될 때 모든 Bean들을 초기화한다. 애플리케이션 실행시 bean 초기화에 실패하는 경우는 바로 오류로 나오기에, 장애를 바로 캐치할 수 있다. >이런 장점이 있는 반면, 의존성이 많은 애플리케이션의 경우에는 ( Bean설정 등 할것이 많은 경우 ) 애플리케이션 실행시간이 늦어지게 될것이다. >이런 상황에, 애플리케이션에 필요한 Bean들을 미리 초기화하는것이 아닌, 필요로 할때 Bean객체를 생성하도록 하는것이 Lazy 이다. >빈을 만들때 @Bean @Lazy 를 붙여서 만들면 된다. >하지만 , @Lazy가 붙은 빈을 다른클래스에서 주입받는다면 , Lazy하지 않게 된다. 왜냐하면, 주입을 하는 시점에 @Lazy가 붙은 빈이 필요로 하게되고, lazy해야하는것이 이미 생..
ArrayList LinkedList 비교 배열을 기반으로하는 컬렉션 프레임워크 (ArrayList) 의 장점 ㄴ 구조가 간단하다. ㄴ 데이터 read시간이 빠르다. ㄴ 생성후 크기 변경이 어렵다. ㄴ 데이터를 임의의 자리에 넣으려면 시간이 오래걸린다. LinkedList - 요소가 연속적이지 않아서 특정 요소에 바로 접근 하는 것이 불가능. ㄴ 요소를 따라따라서 접근해야하기 떄문에 read 하는 시간이 오래걸린다. - Node로 이루어 져있음 class Node{ Node next; // 다음노드를 가리킴 Node pre; Object obj; // 데이터를 저장하는곳 } 속도비교 순차삭제 : ArrayList 가 더빠름 중간에 추가하기 : LinkedList 가 더빠름 n번쨰의 객체 참조하기 : ArrayList 가 더 빠름