본문 바로가기

부트캠프 개발일기/Spring6

39일차: Spring Framework(Advice, JoinPoint) ❯ Advice 특정 조인포인트에서 수행되는 코드를 의미한다. 어드바이스는 순서를 보장하지는 않으므로, 순서를 지정하고 싶다면 @Aspect 적용 단위별로 @Order 애너테이션을 적용해야한다. @Aspect는 각 어드바이스 단위가 아니라 클래스에 적용하게 되므로, 하나의 Aspect에 여러개의 어드바이스가 존재하면 순서 보장이 안된다. 이럴 경우 해당 어드바이스를 별도의 클래스로 구분해 @Aspect로 설정하고, @Order 어노테이션을 적용해 순서를 지정할 수 있다. @Aspect @Order(1) public class LoggingAspect { // Pointcut과 Advice 정의 // ... } @Aspect @Order(2) public class SecurityAspect { // Po.. 2023. 4. 7.
38일차: Spring Framework(AOP) ❯ AOP(Aspect Oriented Programming) 애플리케이션을 보는 관점이 하나의 기능이 아니라 횡단관심사(cross-cutting concerns) 관점으로 보는것이다. 일반적으로 OOP에서 각 객체는 하나의 기능을 구현하도록 설계했는데, 여러 객체에 걸친 공통적인 기능이 있을경우 객체마다 해당 코드를 직접 작성하게되면 중복된 코드가 많아지고 수정이 필요할 경우 여러군데를 수정해야하는 번거로움이 생긴다. 이를 보완하기 위한것이 AOP로, 부가기능을 따로 분리하여 해당 부가기능을 어디에 적용할지를 정해서 하나의 모듈로 만든것이다. 즉, OOP 모듈화의 핵심은 클래스이고 AOP 모듈화의 핵심은 관점이다. ❯ AOP 관련 용어 Aspect : 여러 객체에 공통적으로 적용되는 기능을 말한다. A.. 2023. 4. 7.
37일차: Spring Container 실습 ❯ AnnotationConfigApplicationContext 를 사용해 스프링 컨테이너를 인스턴스화 하는 방법 ApplicationContext는 아래 애너테이션이 달린 클래스를 파라미터로 전달받는다. (@Configuration, @Component, JSR-330 메타데이터) @Configuration 클래스가 입력으로 제공되면 해당 클래스 자체가 Bean 의 정의로 등록되고, 클래스 내에서 선언된 모든 @Bean 메서드도 Bean 의 정의로 등록된다. @Component 클래스와 JSR-330 클래스가 제공되면 Bean 정의로 등록되며 필요한 경우 해당 클래스 내에서 @Autowired 또는 @Inject와 같은 DI 메타데이터가 사용되는것으로 가정한다. ❯ @Bean 애너테이션 사용 @Bea.. 2023. 4. 5.
36일차: Spring Framework (DI, Spring Container, Bean) ❯ DI(Dependency Injection) IoC 원칙 구현을 위해 사용하는 방법을 말한다. 이때까지는 코드에서 직접 new 키워드를 사용해 객체를 생성하고 주입하는 방법을 사용했는데, 이러한 과정을 스프링을 통해서 수행할 수 있다. ❯ 스프링 컨테이너(Spring Container) 스프링 컨테이너란, 애플리케이션 빈의 생명 주기를 관리하는 컴포넌트*이다. * 컴포넌트(Component) : 프로그래밍에서 재사용 가능한 각각의 독립된 모듈. Bean의 생성, 관리, 제거 등의 역할을 담당한다. 현재는 Spring Boot 를 사용하여 개발자가 설정 등은 직접 진행하지 않는 경우가 많다. 스프링 컨테이너는 서로 다른 빈은 연결해 애플리케이션의 빈을 연결하는 역할을 한다. 스프링 컨테이너는 Confi.. 2023. 4. 4.
35일차: Architecture, Spring Boot ❯ 아키텍처(Architecture) 어떤 시스템을 구축할 때 해당 시스템의 비즈니스적 요구사항을 만족하는 전체 시스템 구조를 정의하는것을 의미한다. 이미지나 도형을 사용해 표현하는 경우가 많다. 시스템 아키텍처 : 하드웨어와 소프트웨어를 모두 포함한 어떤 시스템의 전체적 구성을 표현한것 이를 통해 해당 시스템이 어떤 하드웨어로 구성되는지, 어떤 소프트웨어를 사용하는지 대략적으로 알 수 있다. 구성요소간의 상호작용이 어떻게 이루어지는지, 시스템이 정상적으로 동작하기 위한 원리 등을 표현할 수 있다. 아래 그림은 채팅 서버 시스템 아키텍처를 간단하게 나타낸 예시이다. 소프트웨어 아키텍처 : 소프트웨어의 구성을 큰 그림으로 표현한것 해당 소프트웨어가 어떤 기술을 지원하고 어떤 기능을 사용할 수 있는지 대략적.. 2023. 4. 3.
34일차: Spring Framework ❯ Framework Framework 란, 소프트웨어의 설계와 구현을 위해 재사용이 가능하게끔 협업화된 클래스를 제공하는 것을 말한다. 쉽게 표현하면 프레임(틀)을 만들기 위한 도구를 제공한다고 생각하면 된다. 이전에 사용했던 예시로는 Collection Framework 가 있다. 기본 구조가 만들어져있으므로 효율적으로 코드를 작성할 수 있다. 정해진 규약이 있어서 앱을 효율적으로 관리할 수 있다 해당 Framework 에 대한 학습이 필요하다. 정해진 규약이 있으므로 자유로운 개발이 어렵다. 여기에서, 비슷한 역할을 했던 Library 를 생각해볼 수 있다. Framework 와 Library 는 명백히 다른 개념으로, 아래와 같은 차이점을 가진다. Framework : 뼈대를 구성하는 것. 주도권.. 2023. 4. 2.