반응형
SpringFramework 사용이유
목적
- 자주 사용하는 SpringFramework에 대한 장점과 단점을 설명하고 사용하는 이유를 알아보자
Framework란?
바다를 건너는 주행이 쉬울때
제공된 도로로 주행이 쉬울때
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화 된 형태로 클래스들을 제공하는 것
- 그러므로 한 프로젝트에서 동일한 프레임워크를 사용한다는 것은 동일한 설계 및 흐름을 협의 한 상태로 개발을 진행하는 것
- 여러 프레임워크들은 지향하는 목적이 있으며 그 목적에 맞게 사용하는것도 개발자의 덕목
SpringFramewok란?
- POJO(Plain Old Java Object)기반 구성
- 코드 작성 시 개발자가 특정 라이브러리에 의존하지 않고 개발하는 것
- Spring 에서는 ORM 기능을 사용하기 위해 JPA라는 표준 인터페이스를 제공
- 제어반전(IOC)을 지원
- 컨트롤의 제어권을 사용자가 갖는 것이 아닌 프레임워크에서 정하는 것
- Autowired 어노테이션을 이용해 Repository 클래스를 “외부”에서 지정함
- IOC을 통한 DI가 적용 된 소스
- IOC가 적용되지 않은 동작소스
- 의존성 주입(DI)를 지원한다.
- 실제로 IOC와 혼동되는 개념이며, 내용은 비슷하지만 뜻하는 바가 다르다.
- DI는 의존관계를 어떻게 가질 것인가에 대한 문제고, IoC는 누가 소프트웨어의 제어권을 갖고 있느냐의 문제다
참고 사이트
- 필드 주입 - SRP 위반 가능성이 커지며 런타임 시점에서 IOC를 통해 주입되므로 순환참조 가능성 발생
- 수정자 주입
- setter를 이용한 주입방식이며, 선택적인 의존성 사용 가능
- 런타임 시점에서 IOC를 통해 주입되므로 순환참조 가능성
- 참조하지 않고 사용될 수 있으므로 NPE 가능성
- 생성자 주입
- 의존 관계를 모두 주입해야만 객체 생성 가능
- 컴파일 시점에서 선언되므로 순환참조 방지 가능
- 관점지향프로그래밍(AOP) 지원
- 데이터베이스의 트랜잭션 기능 등을 지원
- 높은 확장성
SpringFramework 장점
참고 사이트 - 역시 이론적인 부분말고 실무자들의 경험에 대한 토론이 더 좋다.
- 개발기간 단축 및 개발역량 평준화
- 개발에 필요한 구조가 이미 구현되어 있음(MVC패턴 등)
- 비즈니스 로직에 집중할 수 있음
- Application context라는 IOC엔진을 통해 의존주입을 단순화
- AOP 지원으로 DB 트랜잭셔 기능 등 코드의 가독성을 높일 수 있음
SpringFramework 단점
- 프레임워크 학습에 대한 러닝커브
- Spring이 갖는 기술문제점은 아님.
- 무거운 프레임워크
SpringFramework의 단점 중 해당 항목외로 코딩 능력 저하 등 같은 내용이 있었는데,
해당 사항은 SpringFramework의 편리성이 가져오는 문제점으로 보이며, 이것은
편의성을 주는 서비스들에 대한 공통사항으로 보여 SpringFramework 단점으로 보이진 않는다.
반응형
'Java' 카테고리의 다른 글
[QueryDSL]Q Class Import 불가 (0) | 2023.06.02 |
---|---|
[Spring]SecurityContextHolder란? (1) | 2023.05.04 |
[SpringBoot]SpringBoot 3.x.x War 배포에러 (0) | 2023.03.01 |
[Spring]인텔리제이 환경 Devtools 미작동 시 확인사항 (0) | 2022.10.14 |
[JAVA]Spring Security 사용 시 404에러 (0) | 2022.05.27 |