Spring 15

제어의 역전(IoC), 의존성 주입(DI)

제어의 역전 ( IoC (Inversion of Control) ) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어)해주는 행위 (내가 뭔가 호출하는게 아니라 객체 관리 프로그램이 내 코드를 대신 호출해줌) 제어권이 뒤바뀐다 ! 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 하지만 Spring에서는 xml파일 또는 어노테이션 방식으로 스프링 컨테너에 Bean(객체)를 등록하기만 하면, 스프링 컨테이너에서 Bean의 생명주기(생명 -> 의존성 설정 -> 초기화 -> ..

Web/Spring 2021.06.07

객체 지향 설계와 스프링

스프링 이야기에 왜 객체 지향 이야기가 나오는가? 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 DI(Dependency Injection) : 의존관계, 의존성 주입 DI 컨테이너 제공 (: 자바 객체들을 컨테이너 안에 넣어놓고 안에서 의존관계들을 연결해주고 주입해주는 기능) 2021.06.07 - [Web/Spring] - 제어의 역전(IoC), 의존성 주입(DI) 이것들을 활용해야 클라이언트 코드의 변경 없이 기능 확장할 수 있다. 쉽게 부품을 교체하듯이 개발할 수 있다. ✔︎ 순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 해보면, 결국 스프링 프레임워크를 만들게 된다.(더 정확히는 DI 컨테이너) 정리 모든 설계에 역할과 구현을 분리하자. 자동차, 공연의 예를 떠올려보자..

Web/Spring 2021.06.01

좋은 객체 지향 프로그래밍이란?

객체 지향 특징 추상화 캡슐화 상속 메시지 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 ➡︎ 유연하고 변경이 용이한 객체지향의 방법 객체 지향의 핵심 : 다형성(Polymorphism) 다형성의 실세계 비유 역할과 구현으로 세상을 구분 (역할이 인터페이스, 구현이 인터페이스가 구현한 객체) 예) 자동차 역할을 3개의 다른 자동차로 구현을 ..

Web/Spring 2021.06.01

Spring (스프링)이란 ?

'스프링' 단어 ? 스프링이라는 단어는 문맥에 따라 다르게 사용된다. 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 스프링 프로젝트 필수 스프링 프레임워크 : 제일 핵심 ★ 스프링 부트 : 이 모든 기술(프로젝트)을 편리하게 사용할 수 있도록 도와주는 것. 선택 스프링 데이터 : 관계형 데이터베이스(NoSQL, Mongo DB 등)를 편리하게 사용할 수 있도록 도와주는 것 (Spring Data JPA를 많이 사용한다.) 스프링 세션 : 세션 기능을 편리하게 사용할 수 있도록 도움 스프링 시큐리티 : 보안 관련 스프링 Rest Docs : API문서를 편리하게 해주는 것. 스프링 배치 : 배치 처리에 특화된 기술 스프링 클라우드 : 클라우드 ..

Web/Spring 2021.06.01

웹 도구 Spring Initializr 이용하여 Spring 프로젝트 생성하기

1. 스프링 부트 스타터 사이트로 이동 https://start.spring.io 2. 원하는 사항 선택 Project : 빌드 관리 도구 선택 요즘은 Gradle을 많이 쓰는 추세이다. 상세한 건 빌드 관리 도구 글 참고 2021.05.27 - [CS] - 빌드 관리 도구 (Maven vs Gradle) Language : 언어 선택 Spring Boot : 버전 선택 버전 뒤에 (SNAPSHOT)이 붙어 있다면 아직 만들고 있는 버전이고, (M1)은 아직 정식 release 된 버전이 아니다. 따라서 정식 release 중에서 가장 최신의 버전으로 선택한다. 글을 작성하는 현재는 2.5.0을 선택해주었다. Group : 기업 도메인명 같은 것을 넣어준다. 개인 프로젝트라면 자신의 블로그 도메인을 사용..

Web/Spring 2021.05.27