Spring
-
[스프링] Aspect Oriented Programming (AOP을 이용한 로깅파일 구성)Spring 2023. 8. 5. 22:49
AOP란? Spring AOP는 스프링 프레임워크에서 제공하는 기능중 하나이다. 로깅, 보안, 트랜잭션 관리 등과 같이 항상 사용되는 공통적인 관심사를 모듈화하여 코드 중복을 줄여 유지 보수성 향상에 도움을 주는 기능 메서드, 객체의 기능을 핵심관심사, 공통관심사로 나누어 프로그래밍한다. 핵심관심사 : 각 객체가 갖고있어야 할 본래의 기능 공통관심사 : 여러 객체에서 공통적으로 사용되는 코드 주요 용어 용어 설명 Aspect 공통 기능을 모듈화한것을 의미 Target Aspect가 적용될 대상을 의미, 메서드 클래스가 이에 해당 Join Point Aspect가 적용될 수 있는 시점을 의미, 메서드 실행 전후등이 이에 해당 Advice Aspect의 기능을 정의한 것으로 메서드 실행 전후, 예외 처리 발..
-
SOLID 원칙Spring 2023. 2. 21. 22:12
→ 좋은 Object Oriented Design을 위해서는 다음과 같은 5원칙을 대전제로 따르고 있다. S - Single Responsibility Principle (단일 책임 원칙) 모든 클래스는 단 하나의 책임을 갖는다. 예) 계산기 클래스에는 계산만 하는 책임을 갖게하고, 계산기의 GUI는 GUI클래스에서 책임을 갖게한다. O - Open Closed Principle (개방-폐쇄 원칙) 확장에 대해서는 개방되어야 하지만, 수정에 대해서는 폐쇄되어야 한다. L - Liskov Substitusion Principle (리스코프 치환 법칙) 자식 클래스는 언제나 자신의 부모클래스를 교체할 수 있다. 즉, 부모클래스자리에 자식 클래스가 들어가도 계획대로 잘 동작해야하는 것. 아래의 코드처럼 클래스..
-
[스프링] 컴포넌트 스캔Spring 2022. 10. 3. 10:19
컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능이다. 설정 클래스에서 빈으로 등록하지 않아도 원하는 클래스를 빈에 등록할 수 있으므로 컴포넌트 스캔 기능을 사용하면 설정 코드가 크게 줄어든다. 1. @Component 어노테이션으로 스캔 대상 지정 스프링이 검색해서 빈으로 등록할 수 있으려면 클래스에 @Component 어노테이션을 붙여야 한다. @Component public class MemberDao { private static long nextId = 0; private Map map = new HashMap(); public Member selectByEmail(String email) { return map.get(email); } ... 생략 } Compon..
-
[스프링] 의존성 주입2Spring 2022. 10. 3. 10:05
들어가기 전에 강한 결합 : 객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 갖는다 즉, A클래스 내부에서 B라는 객체를 직접 생성하고 있다면 B객체를 C객체로 바꾸고 싶은 경우 A클래스를 수정해야하는 방식이기에 이런 경우를 강한 결합도를 갖는다라고 일컫는다. 느슨한 결합 : 객체를 주입 받는다는 것은 외부에서 생성된 객체를 인터페이스를 통해 넘겨받는것이다. 이렇게하면 객체간 결합도를 낮출 수 있고, 런타임시에 의존관계가 결정되기에 유연한 구조를 갖을 수 있다. SOLID원칙에서 O에 해당하는 Open-Close Principle을 지키기 위해 디자인패턴 중 전략패턴을 사용하게 되는데, 생성자 주입을 사용하게되면 전략패턴을 사용하게 된다. 6. 스프링 DI 설정 스프링은 의존성 주입을 지원하는 조..
-
[스프링] 의존성 주입1Spring 2022. 10. 3. 09:59
1. 의존이란? 의존성 주입(Dependency Injection)중 Dependency로 객체간 의존을 의미 클래스내 메서드를 통해 기능을 구현하는데 있어, 이미 구현된 다른 클래스(or Library)의 기능을 가져다 사용하게 될 경우 우리는 의존한다라고 정의함. (Class A에서 Class B의 기능을 가져다 쓰는 경우, Class A가 Class B에 의존한다라고 함) public class MemberRegisterService { private MemberDao dao = new MemberDao(); ...생략... public Long regist(RegisterReqDto reqDto) { // 'MemberDao' class의 'selectByEmail' Method를 통해 membe..