Dev 226

[스프링] 스프링 라이브러리 설치하기 ( Maven )

[스프링] 어플리케이션 컨텍스트 ( Application Context ) [스프링] 프레임워크란 무엇인가? ( 제어의 역전 (IOC) ) 스프링은 '프레임워크(FrameWork)'이다. 프레임워크가 개발자의 작업을 도와준다는 말을 많이 들어봤을 것이다. 어떻게 도와준다는 말일까? ' lordofkangs.tistory.com 지난 포스팅에서 프레임워크의 핵심 원리인 '제어의 역전(IoC)'을 구현하는 어플리케이션 컨텍스트에 대해서 알아보았다. 그럼 이번 포스팅에서는 Maven으로 Spring 라이브러리를 추가한 후, 어플리케이션 컨텍스트를 실제로 생성해보겠다. Maven으로 Spring 라이브러리 추가하기 어플리케이션 컨텍스트를 사용하려면 어플리케이션 컨텍스트 기능이 담긴 인터페이스가 필요하다. 표준 ..

Dev/SPRING 2021.08.12

[스프링] 어플리케이션 컨텍스트 ( Application Context )

[스프링] 프레임워크란 무엇인가? ( 제어의 역전 (IOC) ) 스프링은 '프레임워크(FrameWork)'이다. 프레임워크가 개발자의 작업을 도와준다는 말을 많이 들어봤을 것이다. 어떻게 도와준다는 말일까? '프레임워크'란 무엇인가? 프레임워크를 사용하지 않으 lordofkangs.tistory.com 지난 포스팅에서 프레임워크(Framework)란 무엇인가 알아보았다. 간단히 요약하면 프레임워크는 객체의 생성 및 관계 설정 권한을 소스코드로부터 완전히 가져오는 도구를 의미한다. 이를, 제어의 역전(IoC)이라 부른다. 그럼 이번 포스팅에서 구체적으로 어떤 방식으로 제어의 역전이 이루어지는지 알아보자. 어플리케이션 컨텍스트 ( Application Context ) 지난 포스팅에서 객체의 생성 및 관계 ..

Dev/SPRING 2021.08.05

[스프링] 프레임워크란 무엇인가? ( 제어의 역전 (IOC) )

스프링은 '프레임워크(FrameWork)'이다. 프레임워크가 개발자의 작업을 도와준다는 말을 많이 들어봤을 것이다. 어떻게 도와준다는 말일까? '프레임워크'란 무엇인가? 프레임워크를 사용하지 않으면 개발자의 소스코드가 프로그램의 흐름을 제어한다. User user = new User("22231123l","민구","1111"); // user 객체 생성 ConnectionMaker connectionMaker = new AConnectionMaker(); // connectionMaker 객체 생성 UserDao userDao = new UserDao(connectionMaker); // userDao객체 생성 및 userDao와 connectionMaker 간의 관계설정 어떤 객체를 생성할지 어떤 객체..

Dev/SPRING 2021.08.03

[스프링] 관심사의 분리 ( 관계설정 책임의 분리 )

[ 스프링 ] 관심사의 확장 ( 인터페이스 ) [ 스프링 ] 관심사의 분리 ( 클래스의 분리 ) [ 스프링 ] 관심사의 확장 ( 추상클래스 ) [ 스프링 ] 관심사의 분리 ( DAO ) 스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. lordofkangs.tistory.com 지난 포스팅까지 인터페이스를 이용한 확장을 알아 보았다. 그러나 한 가지 문제가 있었다. UserDao 클래스의 관심사는 'DB 엑세스를 위한 SQL실행'이지 'ConnectionMaker 인터페이스의 구현객체와의 관계 설정'은 관심사가 아니다. UserDao 클래스가 한 가지 구현객체를 선택하면 두 클래스는 '종속'되어 버린다. 종속은 변화에 좋지 않은 관계이다. "느슨한 결합"을 유지해야한다. 관계 설정 ..

Dev/SPRING 2021.07.26

[스프링] 관심사의 확장 ( 인터페이스 )

[ 스프링 ] 관심사의 분리 ( 클래스의 분리 ) [ 스프링 ] 관심사의 확장 ( 추상클래스 ) [ 스프링 ] 관심사의 분리 ( DAO ) 스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. ▷ 분리와 확장 분리와 확장을 고려한 설계는 lordofkangs.tistory.com 지난 포스팅에서는 관심사 분리를 메소드가 아닌 클래스로 해보았다. 하지만 여전히 확장성에 문제가 발생했다. 확장을 하려면 '추상화'를 해야한다. 추상화란, 구현 클래스 간의 공통된 특징을 하나로 묶는 것을 의미한다. [ 스프링 ] 관심사의 확장 ( 추상클래스 ) [ 스프링 ] 관심사의 분리 ( DAO ) 스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. ▷ 분리와 확장 분리와 확장을 고려한..

Dev/SPRING 2021.07.24

[스프링] 관심사의 분리 ( 클래스의 분리 )

[ 스프링 ] 관심사의 확장 ( 추상클래스 ) [ 스프링 ] 관심사의 분리 ( DAO ) 스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. ▷ 분리와 확장 분리와 확장을 고려한 설계는 미래를 대비한다. 프로그램을 만들 때는 lordofkangs.tistory.com 지난 포스팅에서 추상클래스를 이용하여 관심사를 확장시켰다. 그러나 상속이라는 특성상 자식클래스는 부모클래스의 1가지 관심사만 상속할 수 없다. 확장성을 고려하여 추상클래스를 사용했지만 완벽한 분리가 이루어지지 않은 것이다. 그래서 이번에는 완벽한 분리를 위해, 하나의 관심사를 다른 클래스로 '분리'시킬 것이다. 추상클래스 코드 public abstract class UserDao { public abstract Conne..

Dev/SPRING 2021.07.22

[스프링] 관심사의 확장 ( 추상클래스 )

[ 스프링 ] 관심사의 분리 ( DAO ) 스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. ▷ 분리와 확장 분리와 확장을 고려한 설계는 미래를 대비한다. 프로그램을 만들 때는 '분리'와 '확장'을 고려해야한 lordofkangs.tistory.com 지난 포스팅에서 관심사의 분리에 대해서 알아보았다. 코드는 '관심사'가 있다. 관심사 별로 분리해줘야 유지보수가 용이하다. 관심사 분리 지난 포스팅에서 DAO 객체의 코드를 관심사 별로 분리하였다. 세부적으로 들어가면 더 많은 관심사로 나눌 수 있지만 크게 세 가지로 나눌 수 있다. 1. DB접근 객체 생성 2. 레코드 삽입 3. 레코드 추출 세 가지 관심사를 메소드 별로 '분리'하였다. public class UserDao { //D..

Dev/SPRING 2021.07.21

[스프링] 관심사의 분리 ( 메소드 분리 )

스프링 프레임워크를 사용하기 위한 기본 개념을 하나씩 정리해볼까 한다. ▷ 분리와 확장 분리와 확장을 고려한 설계는 미래를 대비한다. 프로그램을 만들 때는 '분리'와 '확장'을 고려해야한다. 변화는 대체로 한 가지 관심에서 발생하지만 작업은 한 곳에 발생하지 않는다. 그러므로 분리와 확장이 고려되지 않은 코드는 '유지보수'가 어렵다. 그럼 이제부터 '분리' 와 '확장'을 고려하여 '변화에 대응하는 코드'를 작성해보자. ▷ 관심사의 분리 ( Separation of Concern ) 관심사의 분리란, 관심이 같은 거는 모으고 다른 거는 분리시키는 개념이다. 그럼 이를 DAO 객체를 통해 알아보자. DAO(Data Access Object) : DB에 접근하여 SQL문 실행을 전담하는 객체 UserDao 클..

Dev/SPRING 2021.07.20

[ JAVA ] InputStreamReader : 인코딩

[ JAVA ] 기반 스트림, 보조 스트림 [ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언 lordofkangs.tistory.com 지난 포스팅에서 바이트 스트림의 기반스트림과 보조스트림의 개념을 알아보았다. 개인적으로 문자스트림에서 가장 중요한 클래스는 InputStreamReader 클래스라 생각한다. Reader 추상클래스는 유니코드 문자를 읽기 위해 존재한다. 그러나 인코딩에는 다양한 방식이 존재한다. 인코딩의 종류마다 문자를 표현하는 바이트 수도 다르다. UTF-8 인코딩은 한글을 3byte로 표현하고 ..

Dev/JAVA 2021.07.12

[ JAVA ] 기반 스트림, 보조 스트림

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1 lordofkangs.tistory.com 지난 포스팅에서 스트림(Stream)에 대해서 알아보았다. 간단히 정리하면 데이터는 스트림의 형태로 전송된다. 스트림(Stream)이란, 바이트의 흐름을 의미한다. 프로그램은 외부의 데이터를 스트림의 형태로 입출력한다. 이때, 1byte는 아스키코드 문자와 이미지, 영상 데이터의 기본 단위가 된다. 그러므로 1byte 단위로 스트림을 읽을 필요가 있는데, 이때..

Dev/JAVA 2021.07.12