- POJO 기반의 구성
- 의존성 주입(DI)을 통한 객체 간의 관계 구성
- AOP(Aspect-Oriented-Programming) 지원
- 편리한 MVC 구조
- WAS의 종속적이지 않은 개발 환경
POJO(Plain Old Java Object)
의 구성 만으로 가능하도록 제작되어 있다. 쉽게 말해서 일반적인 Java 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다.'의존성 주입'
이라는 개념이다.의존성(Dependency)
이라는 것은 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미한다.의존성
은 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미한다. 흔히 A 객체가 B 객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다'라고 표현한다.주입(Injection)
은 말 그대로 외부에서 '밀어 넣는 것'을 의미한다.'의존성 주입'
방식을 사용하려면 두번째 그림의 오른쪽 도형처럼 추가적인 하나의 존재가 필요하게 된다. 이 존재는 의존성이 필요한 객체에 필요한 객체를 찾아서 '주입'
하는 역할을 하게 된다.'ApplicationContext'
라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해 주는 구조이다.ApplicationContext
가 관리하는 객체들을 '빈(Bean)'
이라는 용어로 부르고, 빈과 빈 사이의 의존관계를 처리하는 방식으로 XML 설정, 어노테이션 설정, Java 설정 방식을 이용할 수 있다.'반복적인 코드의 제거'
라고 할 수 있다.'횡단 관심사(cross-concern)'
라고 한다.AOP(Aspect Oriented Programming)
는 관점지향 프로그래밍이라고도 불리며 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임이다.어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것
이다.AOP
를 AspectJ
의 문법을 통해서 작성할 수 있는데, 이를 통해서 개발자는1) 핵심 비즈니스 로직에만 집중해서 코드를 개발할 수 있게 되었고,
2) 각 프로젝트마다 다른 관심사를 정용할 때 코드의 수정을 최소화시킬 수 있었으며
3) 원하는 관심사의 유지 보수가 수월한 코드를 구성할 수 있다.
어노테이션(@)
이나 XML
로 설정할 수 있기 때문에 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계되었다.https://engkimbs.tistory.com/746 [새로비:티스토리]
코드로 배우는 스프링 웹프로젝트 / 구멍가게 코딩단