기술/Java - 토비의 스프링
-
토비의 스프링 - 5. DI ( Dependency Injection )기술/Java - 토비의 스프링 2022. 8. 3. 19:04
DI ( Dependency Injection ) IoC 라는 용어가 폭넓게 사용되는 언어이기 때문에 스프링 IoC 라고 해서는 다른 프레임워크와 차별화된 특징을 설명하기 어렵다. 때문에 의존관계 주입이라는 새로운 용어를 사용해서 스프링의 차별점을 확실히 설명할 수 있게 했다. Dependency ( 쉽게 풀어 쓰기 ) James Shore: Dependency Injection Demystified 의존관계는 쉽게 말하면 변수이다. 클래스 내에서 변수를 가지고 있으면 클래스가 그 변수를 의존한다는 뜻이다. Dependency Injection 의존관계 주입은 다음 세 가지 조건을 충족하는 작업을 말한다. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스만 의..
-
토비의 스프링 - 4. 제어의 역전 ( IoC )기술/Java - 토비의 스프링 2022. 8. 3. 18:04
제어의 역전 ( IoC ) DaoFactory 프로그램의 실행, 구성하는 부분을 나눈 관심사의 분리라고도 이야기할 수 있다고 생각하고, 구현 객체가 Factory 에 의해 결정된다는 부분을 보고 제어의 역전이라고 이야기할 수 있을 것 같다. 일반적으로 객체 생성, 연결, 관리, 사용을 프로그래머가 제어하지만 이를 외부에 위임하는 것을 제어의 역전이라고 한다. 대표적으로 제어의 역전이 사용되는 것이 프레임워크다. 라이브러리와 프레임워크 라이브러리는 사용하는 애플리케이션은 흐름을 직접 제어한다. 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 프레임워크가 흐름을 주도하는 중 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식이다. Spring Application Context 스프..
-
토비의 스프링 - 3. 관심사의 분리기술/Java - 토비의 스프링 2022. 8. 3. 14:53
관심사의 분리 관심이 같은 것 끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능 한 따로 떨어져서 변경에 서로 영향을 주지 않도록 분리하는 것이다. UserDao 의 관심사항 커넥션을 가져오는 방법에 대한 관심사 DB 에 보낼 Statement 를 만들고 실행하는 관심사 작업이 끝났을 때 리소스를 돌려주는 관심사 상속을 통한 관심사 분리 템플릿 메소드 패턴, 팩토리 메소드 패턴을 통해 서브 클래스에서 Connection 을 가져오는 방법을 유연하게 변경했다. 하지만 상속을 사용했을 때 단점이 존재한다. UserDao 가 다른 목적을 위해 상속을 사용하고 있다면 어쩔 것인가? 자바는 클래스의 다중상속을 허용하지 않는다. 단지, 커넥션 객체를 가져오는 방법을 분리하기 위해 상..
-
토비의 스프링 - 2. 예시 코드를 따라 하기 위한 환경설정 방법기술/Java - 토비의 스프링 2022. 8. 3. 14:52
Java 설치 패키지 관리자를 통해 설치하는게 로컬의 패키지들을 일관성있게 다룰 수 있고 내 환경설정을 코드화 가능하며 설치와 삭제의 수고로움을 덜 수 있다고 생각한다. 그리고 무엇보다 개발자스럽다.. Window choco install openjdk11 java --version MacOS brew install openjdk11 java --version H2 Database 설치 책에서는 MySQL 을 사용하지만 무겁다. 가벼운 파일 형태의 데이터베이스, Web Console 을 지원해주는 H2 Database 를 사용하는걸 추천한다. Window choco install h2database cd "C:\\Program Files (x86)\\H2\\bin" .\\h2.bat MacOS brew ..
-
토비의 스프링 - 1. 객체 지향 프로그래밍기술/Java - 토비의 스프링 2022. 8. 3. 14:50
객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 이전에는 상태와 함수를 각각 관리했었는데 프로그램이 커지니 관리하기 어려워 관련 있는 상태와 함수를 모은 객체를 만들었다. 객체를 사용함으로써 유연하고 변경이 쉬운 소프트웨어를 개발할 수 있다. 캡슐화 객체의 정보의 접근과 연산을 제어함으로서 아래와 같은 이득을 얻는다. 내부 로직을 외부에서 알 필요가 없이 사용할 수 있다. 변경에 영향을 줄 수 있는 범위를 최소화하는 변경 용이성을 확보한다. 하지만 이러한 개념이 객체 지향에만 국한 된 것은 아니다. C 언어에서도 .h..