개발일지
[Java][Spring] 스프링의 특징과 의존성 주입 본문
코드로 배우는 스프링 웹 프로젝트
[목표]
- 스프링 프레임 워크를 이용해서 의존성 주입에 대한 이해
- 스프링에서 XML 을 이용하는 객체 관리 방법
- 스프링 환경 구축
스프링의 주요 특징
- Plain Old Java Project; POJO 기반의 구성
스프링은 다름 프레임워크와 달리 관계를 구성할 때 별도의 API 를 사용하지 않는다. 쉽게 말해 일반적인 JAVA 코드를 이용해 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 것이다.
이게 중요한 이유는 코드를 개발할 때 개발자가 특정한 라이브러리, 컨테이너의 기술에 종속적이지 않다는 것을 의미한다.
이렇게 되면 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있어 생산적으로 일할 수 있다.
- 의존성 주입을 통한 객체간의 관계 구성
"의존성" 이라는 것은 하나의 객체가 다른 객체 없이 제대로된 역할을 할 수 없다는 것을 의미한다.
"주입" 이라는 것은 그대로 외부에서 밀어 넣는 것을 의미한다.
그래서 "의존성 주입" 은 어떤 객체가 필요한 객체를 외부에서 밀어넣는다 라는 의미가 된다.
그러면 왜 외부에서 객체를 주입하는 방식을 사용할까?
-> 코드에 대입해보면 주입받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없고 어떤 객체에 의존하든 자신은 변하지 않는다.
spring 은 이러한 구조를 만드는데 적합한 구조로 설계되어 있다.
'ApplicationContext' 라는 존재가 필요한 객체들을 생성하고 필요한 객체들을 주입하는 역할을 해주는 구조다.
그래서 spring 을 이용하면 개발자들은 기존 프로젝트와 달리 객체와 객체를 분리해 생성하고 이러한 객체들을 엮는 작업을 하는 형태의 개발을 하게 되는 것이다!
- Aspect-Oriented-Programming; AOP 지원
좋은 개발환경 원칙은 개발자가 비즈니스 로직에만 집중할 수 있게 한다. 이다.
spring 은 AOP 를 AspectJ 문법을 통해 작성할 수 있는데 이를 통해
개발자는 핵심 비즈니스 로직에만 집중해서 코드를 개발할 수 있고
각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정을 최소화 시킬 수 있고
원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.
- 트랜잭션 지원
트랜잭션 처리는 상황에 따라 복잡하게 구성될 수도 있고 아닐 수도 있는데 그때마다 코드를 이용해 처리하는 작업은 개발자에게 상당히 피고한 일이다.
spring 은 이 트랜잭션 관리를 어노테이션, xml 로 설정할 수 있어 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계되어있다.
'JAVA' 카테고리의 다른 글
[이것이 자바다] 정적 멤버와 static (0) | 2022.12.05 |
---|---|
코틀린[Kotlin], 정말 자바[JAVA]와 100% 호환되나? (0) | 2022.11.04 |
[JAVA] 참조 타입 reference type (0) | 2022.03.03 |
[JAVA] 자바 가상 기계 JVM (0) | 2021.12.14 |
[JAVA] StringBuilder (0) | 2021.12.07 |