끄적끄적 코딩일지

22.05.29 3주차 WIL 본문

WIL

22.05.29 3주차 WIL

BaekGyuHyeon 2022. 5. 29. 18:12

Spring이란?

스프링(Spring)이란 Java를 위한 오픈 소스 어플리케이션 프레임워크로써 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다.


Spring 특징

1. 경량 컨테이너(DI)로써 Java객체를 직접 관리한다. 객체의 생성, 소멸과 같은 라이프 사이클을 Spring에서 제어하여 사용자가 필요한 객체를 제공해 준다.

 

2. Plain Old Java Object 방식의 프레임워크이다. 특정 인터페이스를 구현하거나 상속받을 필요가 없어 기존에 존자하는 라이브러리등을 지원하기에 용이하다.

✱Plain Old Java Object : Java EE 등의 중량 프레임워크들이 등장하면서 무거운 객체를 만들게 된 것에 반발해서 사용하게 된 용어이다.

 

3. IoC(Inversion of Control, 제어의 역전)를 지원한다. 즉 객체의 컨트롤 제어권이 사용자가 아니라 프레임워크에 있어서 객체 생성과 의존 관계설정, 사용, 제거등을 사용자가 아니라 스프링에서 담당하낟.

 

4. DI(Dependency Injection, 의존성 주입)을 지원한다. 서비스들 간의 의존성(다른 객체)이 존재할 경우 프레임워크가 서로 연결시켜 준다.

 

5. 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈(ex controller)에서 사용되는 기능을 분리하여 관리할 수 있다.(Configuration 파일을 보안, 트랜잭션과 같이 기능별 분리)

 

6. iBATIS나 Hibernate등 이미 완성도 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

 


주요 모듈

1. IoC Container / DI Container

IoC 기능을 제공하는 모듈으로 객체의 생성과 관리, 의존성주입(DI)기능을 수행한다. 주로 환경설정을 담당하는 xml, properties등의 파일에 의해 결정되고 수행된다. DI Container라고도 부른다.

✱ IoC Container에서 관리하는 객체를 Bean이라고 부른다. @Bean을 통해 Bean으로 등록 및 Container에 등록하고 @Autowired에 의해 등록된 Bean 객체를 조회하여 쓴다.

 

2. AOP Framework

로깅, 보안, Transaction등 핵심적인 비즈니스 로직과 관련이 없으나 여러곳에서 공통적으로 쓰이는 기능을 분리하여 개발 가능하다.

(ex) SpringSecurity를 한 Configuration에 적용하면 모든 Request에 적용이 된다.)

 

3. Database Access Framework

JDBC, iBATIS, Hibernate등에 대한 지원 기능을 제공하여 데이터베이스에 쉽게 접근할 수 있다.

 

4. Transaction Management Framework

추상화된 트랜잭션 관리를 지원한다. 즉 Database에 접근하는 로직에 별도로 추가할 필요 없이 AOP framework를 통해  xml이나 @Transactional을 통해 트랜젝션을 관리할 수 있다.

 

5. MVC(Model View Controller) Pattern

웹 프로그래밍 개발시 거의 표준적인 방식인 MVC 패턴을 사용한다. MVC이란 사용자가 Controller에 요청을 하면 Controller에서는

화면을 구성하는데 필요한 데이터를 조회하여 Model에 담는다. 그럼 View에서는 Model에서 데이터를 받아 필요한 인터페이스를 만들어 사용자에게 제공한다.

'WIL' 카테고리의 다른 글

22.06.26 7주차 WIL  (0) 2022.06.26
22.06.19 6주차 WIL  (0) 2022.06.19
22.06.12 5주차 WIL  (0) 2022.06.12
22.06.05 4주차 WIL  (0) 2022.06.05
22.05.22 2주차 WIL(객체지향 프로그래밍, SOLID, JVM)  (0) 2022.05.22