목록Programming Language/Spring (17)
이야기박스
포인트컷이란?특정 조건에서 어드바이스(공통 기능의 코드)를 실행하기 위한 알고리즘입니다.즉, 횡단 공통기능을 수행하기 위한 필터라고 생각하면 쉬울 것 같습니다. 1. 스프링 트랜잭션 어노테이션포인트 컷 표현식 + 트랜잭션 속성을 이용하여 트랜잭션을 일괄적으로 적용하는건 일반적인 상황에서는 쓰일 수 있지만, 깊게 커스터마이징이 필요한 상황에서는 적합하지 않을 수 있습니다. @Transactional이 어노테이션은 메소드와 타입 뿐만 아니라 클래스에도 적용 가능합니다.- 타깃 : 메소드, 클래스, 인터페이스// the service class that we want to make transactional @Transactional public class DefaultFooService implements F..
https://bgc8214.github.io/%EC%8A%A4%ED%94%84%EB%A7%81/2019/01/31/%EC%8A%A4%ED%94%84%EB%A7%81-6%EC%9E%A5-AOP(2).html
Aspect Oriented Programming 의존성 너무 많은걸 나눕시다--> Mock 오브젝트 만들어서 테스트하면 mock에만 의존할 수 있음 mockito 사용법 볼 것
비지니스 로직단순 CRUD 말고 관리자 도구 만들어 봅시다.==> 관리용 필드 추가 필요 (아래 예시에서의 Level)* 사용자 레벨 추가하는 경우int 필드 사용 ===> enum 필드 사용 // int 사용시, 범위가 넘어서는 에러가 발생할 수 있음 setLevel(1000)public enum Level { BASIC(1), SILVER(2), GOLD(3); @Getter private final int value; Level(int value) { this.value = value; } public static Level valueOf(int value) { switch (value) { case 1: return BASIC; case 2: return SILVER; case 3: return ..
예시를 보여주는 장 * connection close()커넥션을 풀로 다시 반환해주는 것 * resultSet close()try-catch-finally 예외처리 합시다 !!- 실수할 여지가 있음--> 책에서는 분리&재사용을 위한 디자인 패턴 적용을 말함앞에서 다루었던 템플릿 메서드 패턴, 전략 패턴 적용함 마이크로 DI 주로 생각하는 DI (DI 컨테이너 - 클라이언트)마이크로 DI (오브젝트 팩토리 - 클라이언트) * try-with-resources 구문을 사용하는 것이 더 좋은 것 같아요.String sql = "select 1"; try(Connection connection = DriverManager.getConnection("","","")) { // 이하 동문 } catch (SQLEx..
오브젝트 팩토리 라이브러리 vs 프레임워크라이브러리 - 우리가 순서 정함프레임워크 - 순서 정해져 있음 --> 위에 얹을 뿐 어플리케이션 컨텍트 장점1. 팩토리 구체적으로 알 필요 없음2. 종합 IoC3. 빈 검색 다양한 방법 제공 DI spring boot에서 기본으로 bean 등록된거 호출하는거 말고, 어떻게 호출하는지? xml 을 통한 주입 --> @configuration의존성 넣을때 수정자 [구조 검사]dtd, schema를 통해서 검사근데 실제로는 겁나 어려움스키마는 IDE에서 지원해주니까 이걸로 씁시다 [xml 적용]applicationContext.xml 만들고main 에서 new Generic---(path) [DataSource 인터페이스]dataSource.set~~~()===>
스프링의 핵심 철학기본으로 돌아가서 객체 지향의 진수를 보여주자==> 오브젝트의 깊은 관심을 가져야 함--> 오브젝트 설계--> 객체지향 설계 그 첫 번째, 데이터 모델을 관리해주는 DAO !!DAO[DAO란?]Data Access ObjectDB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 [AOP란]Aspect Oriented Programming비지니스 로직 + 공통 모듈 ==> 기능 구현특정 관점(예를 들면 기능)에서 모듈을 나누고 이 모듈에 비지니스 로직을 삽입하는 방식으로 개발하는 것 [관심사 분리 예제]- 메소드 분리- 클래스분리- 인터페이스 구성--> ( git ) 기타 용어[자바빈]- 디폴트 생성자 : 파라미터가 없는 생성자- 프로퍼티 : getter/setter..