본문 바로가기
2024 웹/Spring & Spring Boot

Spring

by concho 2024. 4. 11.

spring 장점 :

1. 코드의 간소화로 이해하기 쉽다.
2. 낮은 결합도 => 테스트 용이, 코드 수정 범위 축소
3. 클래스 재사용성 및 유지보수성 향상

 

키워드:

AOP(Aspect Oriented Programming)
- 공통 관심사 분리

AOP는 관점 지향 프로그래밍을 의미합니다. 이는 애플리케이션의 공통적인 관심사(cross-cutting concerns)를 애플리케이션의 핵심 로직으로부터 분리하여 모듈화하는 프로그래밍 패러다임입니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등은 여러 모듈에 걸쳐 공통적으로 사용되지만, 각각의 모듈의 핵심 기능과는 직접적인 관련이 없는 기능입니다. AOP는 이러한 공통적인 기능을 'Aspect'라는 모듈로 분리하여, 필요한 위치에 적용(weaving)하게 합니다. Spring에서는 AOP를 통해 코드의 중복을 줄이고, 유지보수를 용이하게 합니다.

- 어노테이션
@Aspect
- AOP로 정의하는 클래스를 지정함
@Pointcut
- AOP기능을 메소드, Annotation 등 어디에 적용시킬지 지점을 설정
지점을 설정하기 위한 수식들이 매우 많음
@Before
- 메소드 실행하기 이전
@After
- 메소드가 성공적으로 실행 후 (예외 발생 되더라도 실행 됨)
@AfterReturning
- 메소드가 정상적으로 종료될때
@AfterThrowing
- 메소드에서 예외가 발생할때
@Around Before + After 
- 모두 제어 (에외 발생 되더라도 실행 됨)
POJO(Plain Old Java Object)
POJO는 "평범한 옛날 자바 객체"를 의미합니다. Spring Framework는 특별한 클래스를 상속받거나 인터페이스를 구현하지 않아도 되는 POJO를 지향합니다. 이는 개발자가 특정 인터페이스나 클래스를 강제로 상속받지 않아도 되기 때문에, 코드를 더욱 간결하게 하고, 재사용성 및 테스트 용이성을 높일 수 있습니다. POJO는 EJB(Enterprise JavaBeans)와 같은 무거운 자바 모델의 대안으로 제시되기도 했습니다.
IoC(Inversion of Control)
IoC는 제어의 역전을 의미합니다. 전통적인 프로그래밍에서는 애플리케이션의 흐름을 개발자가 제어했습니다. 하지만 IoC에서는 이러한 제어 권한을 프레임워크에 위임합니다. 이는 주로 'Container'를 통해 이루어지며, Spring Framework에서는 Spring Container가 이 역할을 합니다. Container는 객체의 생명주기와 객체 간의 의존성을 관리하며, 개발자는 필요한 객체를 Container로부터 주입받아 사용합니다. IoC를 통해 코드의 결합도를 낮추고, 유연성 및 확장성을 높일 수 있습니다.
DI(Dependency Injection)
DI는 IoC의 한 형태로, 객체 간의 의존성을 외부에서 주입하는 방식을 말합니다. 개발자는 객체를 직접 생성하지 않고, 필요한 의존성을 Container가 자동으로 '주입'하여 사용합니다. 이는 @Autowired 어노테이션과 같은 메커니즘을 통해 이루어집니다. DI를 사용함으로써, 코드는 더욱 모듈화되고 테스트하기 쉬워집니다. 또한, 의존성의 변경이 필요할 때, 코드를 수정하지 않고 설정 파일이나 어노테이션만 변경함으로써 유연하게 대응할 수 있습니다.

 

'2024 웹 > Spring & Spring Boot' 카테고리의 다른 글

spring and jdbc  (0) 2024.04.15
spring mvc  (0) 2024.04.15
[SpringBoot] Google 이메일 인증  (0) 2024.04.04
지도위의 스토리 .v2 로 다시 시작  (0) 2024.03.13
[Spring & Spring boot] directory 구조  (0) 2024.03.13

댓글