혜야의 코딩스토리

[Spring] 스프링 프레임워크의 특징 본문

꿈 : 멋진 개발자 🧸/Java

[Spring] 스프링 프레임워크의 특징

hyeya_ 2022. 9. 23. 21:59

📌Framework란?

'기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품'
일정한 툴 속에서 개발하기 때문에 개발 후 유지보수 및 기능의 확장 용이 => 소프트웨어 품질 향상

📌Spring Framework란?

자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크
기존 프레임워크보다 가벼워 경량 프레임워크라고도 함

경량 컨테이너 EJB보다 가벼운 경량 컨테이너 기능을 수행
POJO(Plain Old Java Object) : 자바 개발자가 특별한 언어를 추가로 배우지 않고 순수 자바 언어를 써서 개발의 부담을 줄일 수 있다.
DI(Dependency Injection)  의존성 주입이라고 하며 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법이다.
 IoC(Inversion of Control) 제어의 역행 또는 반전이라고도 하는데 기존에는 개발자에게 제어권이 있었으나(new 연산자), 객체의 생성부터 소멸까지 제어권을 스프링에게 넘김으로써 제어권이 역행되었다고 한다. 따라서 서블릿이나 myBatis등의 제어권을 스프링에게 위임하다 보니 session.close()등의 리소스 정리 작업들을 생략할 수 있다.
AOP(Aspect Oriented Programming) 관점 지향 프로그래밍이라고 하며 핵심 기능 외 부수적 기능들을 분리 구현함으로써 모듈별 중복되는 코드를 줄인 방법이다.
MVC(Model-View-Controller)  MVC패턴을 지원함으로써 Model2구조로 Application을 만들 수 있도록 지원한다.

💡 Spring Core

Spring Core는 Spring Container을 의미하며, "core"라는 단어가 붙어있다는 점에서 알 수 있듯이 스프링에서 가장 핵심이 되는 모듈이다. 코어 컨테이너에서 가장 핵심이 되는 것은 "BeanFactory"로 팩토리 패턴으로 구현되어있다. BeanFactory는 객체 구성과 의존성을 실제 코드에서 분리하는 IoC패턴을 적용하고 있다.

 

💡Spring Context

Spring context는 context 정보를 포함하고 있는 설정 파일이다. 즉, 주요 서비스들을 설정하는 파일이다. Spring Context에는 JNDI(Java Naming and Directory Interface), EJB, e-mail, Validation(데이터 검증), Scheduiling, Internalization(국제화) 등 엔터프라이즈 서비스들을 포함하고 있다.

 

💡 Spring  AOP

Spring AOP module은 spring Framework에서 AOP(관점 지향 프로그래밍)을 할 수 있도록 하며 코드로 직접 트랜잭션을 관리하지 않고 선언함으로써 트랜잭션 관리를 통합할 수 있다.

 

💡 Spring DAO

DAO란 Data Access Object의 약자로 Database Data에 접근하는 객체이다. Spring JDBC DAO는 추상 레이어를 지원하며 서로 다른 DB 벤더들(Oracle, MySQL, DB2, MS-SQL, Sybase)에서 던지는 에러 메시지나 예외를 처리할 수 있는 의미 있는 예외 계층을 제공한다. 예외 계층을 통해 커넥션을 열고 닫을 때 생길 수 있는 에러들을 처리하는 코드나 예외처리를 간편화 시켜 일관된 방법으로 코드를 짤 수 있게 도와준다.

 

💡 Spring ORM

Spring에서는 MyBatis, Hibernate, Java Persistence API(JPA), Java Data Object(JDO) 등 인기있는 객체 관계형 도구(OR 도구)를 사용할 수 있도록 지원한다.

 

💡 Spring Web

Web context module은 Application context module에 내장되어 있으며 Web기반의 응용프로그램에 대한 context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 웹퍼블리싱 기능을 지원한다. 과거에 인기 있던 프레임워크인 Jakarta Struts와의 통합을 지원한다.

 

💡 Spring Web MVC

Spring은 Web애플리케이션을 구축하기 위한 완전한 기능을 갖춘 서블릿 기반의 MVC프레임워크이다.

 

💡 @Annotation (어노테이션)

스프링에서는 @을 활용하여 객체(bean)을 등록하거나 활용한다.

 

@Controller controller bean으로 등록
@Service service bean으로 등록
@Repository dao bean으로 등록
@Component 범용 bean으로 등록
(DAO에서 @Repository대신 적용 가능)
@RequestParam request.getParameter()
@ModelAttribute form데이터 전체를 dto에 저장
@PathVariable url에 포함된 변수 처리
@ResponseBody Controller의 method의 리턴값을 json으로 변환
@RestController Controller의 method의 리턴값을 json으로 변환

 

💡 의존관계 주입(DI) 3가지 방식

  @Autowired @Inject @Resource
범용 Spring Java, Spring Java, Spring
연결방식 Type Type Name