본문 바로가기

Java/Spring7

[Spring] 스프링 AOP Pointcut 표현식 포인트컷을 이용하면 어드바이스 메소드가 적용될 비즈니스 메소드를 정확하게 필터링 할 수 있음 ( ※ Pointcut : 특정 조건에 의해 필터링된 Joinpoint, 수많은 Joinpoint 중에 특정 메서드에서만 공통기능(횡단관심사)을 수행시키기 위해서 사용한다) 지시자(PCD, AspectJ pointcut designators)의 종류 (PCD : 흔히 우리가 사용하고 있는 execution이라든지 @annotation 지정자를 PointCut Desinator라 하여 통상 "PCD"라 불림 PCD는 타깃의 여러 Joinpoint 중에 어드바이스를 어디에 적용을 시킬지, AOP에게 알려주는 키워드라고 할 수 있음) 1. execution : 가장 정교한 포인트컷을 만들 수 있음 리턴타입 패키지경로 .. 2021. 8. 18.
[Spring] Bean 설정, 컴포넌트 스캔(Component Scan) 1. Bean 설정 방법 방법 설명 XML 기반 설정 방식 XML 파일을 사용하는 방법 요소의 class 속성에 FQCN(Fully-Qualified Class Name)을 기술하면 빈이 정의됨 으로 bean 생성 또는 요소를 사용해 의존성주입(DI) Annotation 기반 설정 방식 @Component 계열 Annotation이 명시된 클래스를 탐색(Component Scan)해서 IoC Container에 Bean을 자동으로 등록하는 방법 Java 기반 설정 방식 @Configuration을 Java Class에 명시하여 설정하고 @Bean을 사용해 bean을 정의하는 방법 (XML + Annotation 방식 또는 Java class + Annotation 방식 의 조합으로 주로 설정한다) 1-1.. 2021. 6. 1.
[Spring/MyBatis] MyBatis? MyBatis란? SQL 기반의 영속성 계층 프레임워크 (Persistence layer framework) - SQL과 자바 객채를 매핑하는 사상에서 개발된 데이터베이스 접근용 프레임워크 - SQL을 별도의 파일로 분리해서 관리하게 해준다 JDBC Framework - Hibernate나 JPA 처럼 새로운 DB프로그래밍 패러다임을 익혀야 하는 부담없이 SQL을 그대로 이용 - JDBC 코드 작성의 불편함도 제거해주고 도메인 객체나 VO 객체를 중심으로 개발이 가능 특징 SQL문과 프로그램 코드의 분리 - SQL을 설정파일이나 Annotation에 선언적으로 정의해서 자바로 작성된 비즈니스 로직(애플리케이션)에서 SQL 자체를 숨길 수 있음 - SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일.. 2021. 5. 28.
[Spring] 스프링 AOP(관점지향 프로그래밍, Aspect-Oriented-Programming) 1. 관점 지향 프로그래밍(AOP: Aspect-Oriented-Programming)? 1-1 AOP 개요 - 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것 - 시스템을 핵심관심사(Core Concern)와 횡단관심사(Cross-cutting Concern)로 구분하여 설계와 구현을 한다 핵심관심사 시스템의 목적에 해당하는 주요 로직 횡단관심사 시스템의 여러 부분에 걸쳐 공통적이고 반복적으로 필요로 하는 처리내용. 대표적으로 로깅, 보안, 트랜잭션 관리, 예외처리 등 - 시스템의 여러 영역에 걸쳐 공통적이고 반복적으로 적용된 횡단관심사를 분리하여 별도의 모듈에서 설계, 구현, 운영하는 프로그래밍 기법 - 애플리케이션 코드에서 공통적인 기.. 2021. 5. 24.
[Spring] Maven? 메이븐 - Dependency Management(의존성 관리)의 역할 - 애플리케이션 개발에 있어서 프로젝트를 빌드하고 필요한 많은 라이브러리를 일괄적으로 관리주는 도구 ​ 사용하는 이유 - 개발자들이 편하게 서로 같이 협력하면서 일을 할 수 있도록 개발이 됨 1. 프로젝트를 진행하는데 라이브러리를 사용 2. 사용하는 라리브러리 수가 몇개 안되면 그냥 jar을 추가해서 사용하면 되지만, 프로젝트의 규모가 커질수록 라이브러리의 관리가 힘들어짐 3. 개발자들이 모두 같은 환경에서 개발을 해야하는데 카톡이나 메일로 라이브러리를 보내주면서 계속 import 시켜주는 비효율적인 행위보다는 pom.xml만 공유하는게 효율적 메이븐 연습 프로젝트 생성 후 프로젝트에서 마우스 우클릭하면 이렇게 나온다 Configur.. 2021. 5. 23.
[Spring] IoC (제어 역전, Inversion Of Control) / DI (의존성 주입, Dependency Injection) 1. 제어 역전 (IoC: Inversion Of Control) - 인스턴스를 제어하는 제어권이 역전된다는 것 (메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미한다) (컴포넌트를 구성하는 인스턴스 생성과 의존관계 연결처리를 스프링 IoC 컨테이너에 위임한다) - 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출한다 - 애플리케이션의 느슨한 결합을 도모한다 -> 어떤 객체가 사용할 객체(의존관계인 객체)를 직접 선언하여 사용하는 것이 아니라, 어떤 방법을 사용하여(ex. 생성자) 주입받아 사용하는 것 블럭 끼워넣기 개발이라고도 함 2. 의존성 주입 (DI: Dependency Injection) - 제어 역전이 발생할 .. 2021. 5. 20.