프로그래밍/Spring

[Spring] 스프링의 주요 특징

daykim 2023. 9. 11. 10:22

POJO 기반의 구성

  • POJO ( Plain Old Java Object)
  • 스프링은 객체간의 관계를 구성할 때, 별도의 API 등을 사용하지 않는 POJO의 구성만으로 가능하도록 제작되어 있다.
  • 즉, 일반적인 Java 코드를 이용해 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다.
  • 이것은 코드를 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미한다.
  • 그래서 생산성에서 유리하고, 코드에 대한 테스트 작업도 좀 더 유연하게 할 수 있다.

 

의존성 주입(DI)를 통한 객체 간의 구성 관계

  • 의존성 (Dependency) : 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것이다.
  • 주입(Injection) : 외부에서 밀어넣는 것. 객체를 얻기 위해 주체가 수동적인 것이다.
  • 의존성 주입 -> 어떤 객체가 필요한 객체를 외부에서 밀어 넣는다.
  • 이러한 방법은 객체를 주입 받는 입장에서 어떤 객체인지 신경 쓸 필요가 없고,
    어떤 객체에 의존하든 자신의 역할은 변하지 않는다는 장점이 있다.

 

ApplicationContext

  • 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해주는 구조다.
  • 즉, 스프링은 객체와 객체를 분리해 생성하고, 이러한 객체들을 엮는 작업을 하는 형태의 개발을 한다.
  • ApplicationContext가 관리하는 객체들을 빈(Bean)이라고 한다.
  • 빈과 빈 사이의 의존관계를 처리하는 방식으로 XML, 어노테이션, java 설정 방식을 이용할 수 있다.

 

AOP의 지원

  • AOP (Aspect Oriented Programming)
  • 횡단 관심사(cross - concern) : 대부분의 시스템이 공통으로 가지고 있는 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분이다.
  • 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임이다.
  • 장점
    • 핵심 비즈니스 로직에만 집중해 코드를 개발할 수 있다.
    • 각 프로젝트마다 다른 관심사를 적용할 때, 코드 수정을 최소화 할 수 있다.
    • 원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.

 

트랜잭션의 지원

  • 데이터베이스를 이용할 때, 하나의 업무가 여러 작업으로 이루어지는 경우의 트랜잭션 처리가 중요하다.
  • 스프링은 이런 트랜잭션 관리를 어노테이션이나 XML로 설정할 수 있어, 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계되어 있다.

 

 

 

 

 

https://velog.io/@hannaxannah/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EA%B7%B8%EA%B2%8C-%EB%AD%94%EB%8D%B0-%EA%B7%B8%EA%B1%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EB%8A%94-%EA%B1%B4%EB%8D%B0