back-end

    [Spring] 오브젝트 팩토리

    👉 클라이언트인 UserDaoTest에서 ConnectionMaker 구현 클래스를 사용할지를 결정하는 기능을 갖고 있습니다. 하지만 UserDaoTest는 UserDao의 기능이 잘 동작하는지 테스트를 위한 클래스입니다. 그렇기 때문에 UserDaoTest에 있는 Connection Maker 구현 부분을 분리해야합니다. 💡 팩토리 분리시킬 기능을 담당할 클래스를 만들기 위해, 이 클래스는 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 것인데, 이 클래스를 팩토리라고 부릅니다. 주의해야할 점은 추상 팩토리 패턴이나 팩토리 메소드 패턴과는 다르다는 것을 인지해야합니다. 이제 팩토리 클래스의 역할을 하는 DaoFactory 클래스를 만들어보겠습니다. DaoFactory 클래스 public..

    [Spring] 객체지향적 DAO - 확장 (전략 패턴)

    객체지향 세계에서 모든 오브젝트는 변한다고 했는데, 모든 오브젝트가 다 동일한 방식으로 변하진 않습니다. 이전 글에서, 상속을 통해 DAO를 분리해봤습니다. 하지만 상속에는 여러 가지 문제점이 있습니다. 참고: https://withseungryu.tistory.com/67 [Spring] 객체지향적 DAO 만들기 - 분리 👉 객체지향의 세계에서는 모든것이 변하는데, 쉽게 말하면 객체에 대한 설계와 이를 구현한 코드가 변한다는 것입니다. 그렇기 때문에 개발자는 객체를 설계할 때 바로 미래의 변화를 어떻게 withseungryu.tistory.com 이러한 문제들이 있기 때문에, 이번에는 상속 관계과 아닌 독립적인 클래스로 만들어보겠습니다. 즉, DB Connection 부분을 서브클래스가 아닌, 별도의 ..

    [Spring] DAO 기본 구조 만들기

    🧐 DAO란? DAO(Data Access Object)는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 🧐 DAO 기본 구조 먼저 사용자 정보를 쉽게 저장하기 위한 객체를 위해 User 클래스를 만들어줍니다. User Class public class User { String id; String name; String password; public String getId(){ return id; } public void setId(String id){ this.id = id; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public String ge..

    [Spring] @Bean 과 @Component 차이

    🧐 @Bean 과 @Component 사용하는 이유? IoC Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하며 빈을 가져오기 위해 빈 스캐닝을 합니다. 대표적으로 빈으로 사용 할 수 있도록 해주는 어노테이션으로 @Bean과 @Component이 있다. (@Configuration은 구성클래스를 만들 때 사용, @Repository, @Service, @Controller는 @Component에 속해있다.) 😊@Bean vs @Component 👉 @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Configuration을 선언한 클래스 내부에..

    [Spring] POJO 구성해보기

    🧐 자바로 POJO 구성해보기 (1) POJO클래스를 설계할 때 @Configuration, @Bean을 붙여 자바 구성 클래스를 만들거나, @Component, @Repository, @Service, @Controller를 붙여 자바 컴포넌트를 구성해야합니다. IoC 컨테이너는 위와 같이 애너테이션을 붙인 자바 클래스를 스캐닝하여 POJO 인스턴스를 구성해줄 수 있습니다. 기본적인 POJO를 설계할 때의 원리는, 아래 그림과 같이 Main Class에서 IoC 컨테이너를 생성해주고, 구성 클래스에서 생성된 빈 인스턴스를 가져오는 원리입니다. POJO를 사용하기 위해 다목적 시퀀스 생성기 애플리케이션을 만들어보면, prefix, suffix, initial 세 프로퍼티를 지닌 SequenceGenera..

    [Spring] 스프링의 심장부 - IoC (제어의 역전)

    🧐 IoC (제어의 역전이란?) 스프링 프레임워크의 심장부 Inversion of Control 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것. 스프링의 중요한 개발 개념인 의존성 주입을 이해하기 위해 알고 있어햐하는 개념. 객체 간의 결합도(의존도)를 줄이고 유연한 코드를 작성 할 수 있음. 가독성 및 코드의 중복 해소, 유지보수를 편리하게 도와줌 객체가 자신이 사용할 객체를 스스로 선택하지 않음. 대표적으로 템플릿 메소드 패턴이 있음 🤨 객체 간의 결합도 (의존도) ' 어떤 객체가 다른 객체에 의존하는 정도를 나타낸다.' 코로나 바이러스로 인해 사람들은 항상 마스크를 사용하고 다녀야 합니다. 항상 사용해야하기 때문에 사람과 마스크의 의존도가 높다고 할 수 있습니다. 이를 강결합이라고 부릅니다. 그리..