분류 전체보기72 스프링 AOP란 AOP (Aspect Oriented Programming)는 관점 지향 프로그래밍이다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예를들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 이다. 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발견할 수 있는 데 이것을 **.. 2022. 5. 7. DI(의존성 주입) 방법 의존관계 주입 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(Setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이다. 특징 생성자 호출시점에 딱 1번만 호출되는 것을 보장한다. 불변, 필수 의존관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. 물론 스프링 빈에만 해당한다. private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //@Autowired // 생성자가 하나이기 때문에 @Autowired 를 생략 가능하다. public OrderServiceImpl(MemberReposi.. 2022. 5. 6. JPA에서 엔티티 설계 시 주의 사항 1. Entity에서는 가급적 Setter를 사용하지 않는 것이 좋다. Setter를 사용하면 변경 포인트가 많아서 유지 보수가 어렵다. 즉, 특정 엔티티가 어디에서 수정된건지 파악하지 힘들어서 유지보수가 힘들다 2. 모든 연관 관계는 지연로딩(LAZY)으로 설정하는게 좋다. 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서는 모든 연관관계는 LAZY로 설정해야한다. 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔터티 그래프 기능을 사용한다. • @XToOne(OneToOne, ManyToOne) 관계는 default값 이 EAGER(즉시로딩)이므로 지연로딩으로 설정해야 한다. 3... 2022. 4. 27. String vs StringBuffer vs StringBuilder String/ StringBuffer/ StringBuilder Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다. 그러나 연산횟수가 많아지거나 멀티쓰레드, Race condition 등의 상황이 자주 발생 한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해 주셔야 합니다! 경쟁상태(Race condition) : 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말한다. String과 StringBuffer, StringBuilder의 차이점 .. 2022. 4. 25. XSS(Cross Site Script)란 XSS(Cross Site Script)란 XSS란 웹 어플리케이션에서 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우에 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입하여 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점이다. 공격자는 취약점을 이용하여 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행한다. XSS 공격 종류 Stored XSS (저장형 XSS) * 공격자가 취약한 웹서버에 악성 스크립트를 저장하면 희생자가 해당 자료를 요청할 때 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식이다. https://t1.daumcdn.net/cfile/tistory/9920EB3359A.. 2022. 4. 22. 그래프란 그래프란 노드(N : Node)와 그 노드를 연결하는 간선(E: Edge)을 하나로 모아 놓은 자료구조이다. 즉, 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조이다. ex) 지도, 지하철 노선도의 최단 경로, 전기 회로의 소자들 그래프(Graph)와 관련된 용어 정점(vertex): 위치라는 개념. (node 라고도 부름) 간선(edge): 위치 간의 관계. 즉, 노드를 연결하는 선 (link, branch 라고도 부름) 인접 정점(adjacent vertex): 간선에 의 해 직접 연결된 정점 정점의 차수(degree): 무방향 그래프에서 하나의 정점에 인접한 정점의 수 무방향 그래프에 존재하는 정점의 모든 차수의 합 = 그래프의 간선 수의 2배 진입 차수(in-degree): 방향 그래프에.. 2022. 4. 22. 이전 1 ··· 5 6 7 8 9 10 11 12 다음