///////
Search
🌱

Spring이란 무엇인가요? Spring이 이야기하는 장점에는 무엇들이 있을까요? (EJB와 비교해서 설명하면 좋을듯)

Spring Framework

Java 기반의 application framework
Framework란?
프레임워크는 프로그램의 기초를 구축할 수 있는 코드의 집합
e.g.) Java의 Spring, Python의 DjangoFlask, Facebook의 React.NET Framework
대규모 데이터를 처리하기 위한 애플리케이션을 개발하기 위한 다양한 기능을 제공함
특징
POJO: Plain Old Java Object 방식 사용
EJB (Enterprise JavaBeans)는 Spring 이전의 Java 기반 프레임워크
자바 개발에 있어 로우 레벨 개발에 신경을 안 쓰고 큰 규모의 어플리케이션을 쉽게 만들어주었지만 객체지향성을 감소시키는 단점이 있었다. 그래서 EJB 전의 순수하게 객체지향적이였던 방식을 POJO 라고 명칭
public class MyPojo { private String name; private int age; public String getName() { return name; } public String getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
Java
복사
제어 반전(IoC : Inversion of Control) 지원
객체의 제어권이 사용자가 아니라 프레임워크가 가지고 있고 필요에 따라 스프링에서 사용자의 코드를 호출한다
의존성 주입(DI : Dependency Injection) 지원
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다
 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming) 지원
트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다
영속성과 관련된 다양한 서비스를 지원
 iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다
높은 확장성
수많은 라이브러리를 지원
장점
EJB에 비해 가볍기 때문에 엔터프라이즈급의 시스템을 더 빠른 시간에 작성 가능
기존의 프레임워크들은 웹, 또는 하드웨어, 데이터베이스등 전문적인 영역만 지원하는 경우가 많은데, 스프링은 어느 한 분야에 집중하기 보다, 전체를 설계하는 용도로 사용
스프링은 application framework로 전체 구조를 아우르기 때문에 특정 영역의 프레임워크와 같이 사용 가능