728x90
반응형

Spring 58

스프링 컨테이너에 등록된 빈 출력하기

@Configuration 애노테이션을 이용하여 스프링 컨테이너를 생성하고 @Bean등록을 통해 스프링에 빈으로 등록할 클래스를 지정할 수 있다. 그리고 또 다른 클래스에서는 AnnotationConfigApplicationContext를 통해 스프링 컨테이너를 가져올 수 있다. 이거에 대한 글은 아래 글에 게시했었다. https://wonsjung.tistory.com/359?category=1001976 오브젝트와 의존관계 - 5. 제어의 역전(IoC) / Spring's IoC IoC라는 약자로 많이 사용되는 제어의 역전(Inversion of Control)이라는 용어가 있다. 제어권의 이전을 통한 제어관계 역전 제어의 역전이라는 건, 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것이 wonsju..

오브젝트와 의존관계 - etc. 스프링 IoC의 용어 정리

▶ 빈 (bean) - 빈 또는 빈 오브젝트는 스프링이 IoC 방식으로 관리하는 오브젝트라는 뜻이다. 관리되는 오브젝트(managed object)라고 부르기도 한다. 주의할 점은 스프링을 사용하는 애플리케이션에서 만들어지는 모든 오브젝트가 다 빈은 아니라는 사실이다. 그 중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다. ▶ 빈 팩토리 (bean factory) - 스프링의 IoC를 담당하는 핵심 컨테이너. 빈을 등록, 생성, 조회, 반환을 하며, 그 외에 부가적인 빈을 관리하는 기능을 담당한다. 보통은 이 빈 팩토리를 바로 사용하지 않고 이를 확장한 애플리케이션 컨텍스트를 사용한다. BeanFactory라고 붙여쓰면 빈 팩토리가 구현하고 있는 가장 기본적인 인터페이스의 이름..

오브젝트와 의존관계 - 5. 제어의 역전(IoC) / Spring's IoC

IoC라는 약자로 많이 사용되는 제어의 역전(Inversion of Control)이라는 용어가 있다. 제어권의 이전을 통한 제어관계 역전 제어의 역전이라는 건, 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라고 설명할 수 있다. 일반적으로 프로그램의 흐름은 main() 메서드와 같이 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정하고, 결정한 오브젝트를 생성하고, 만들어진 오브젝트에 있는 메서드를 호출하고, 그 오브젝트 메서드 안에서 다음에 사용할 것을 결정하고 호출하는 식의 작업이 반복된다. 이렇게 진행되면 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 제어의 역전이란 이런 제어 흐름의 개념을 거꾸로 뒤집는 것이다. 제어의 역전에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 ..

오브젝트와 의존관계 - 4. 개방 폐쇄 원칙 / 전략 패턴

개방 폐쇄 원칙(OCP, Open-Closed Principle)은 깔끔한 설계를 위해 적용 가능한 객체 지향 설계 원칙 중의 하나다. 이 원칙을 간단히 정의하자면 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야한다. 좋은 객체 지향 설계 원칙(SOLID)에 대해 정리해놓은 글이 있다. https://wonsjung.tistory.com/290?category=987440 좋은 객체 지향 프로그래밍 다형성 : Polymorphism 하나의 코드로 다양한 타입의 객체를 처리하는 기술 : 인터페이스를 기반으로 한 구현 클래스로 다른 일을 할 수 있도록 하는 것 -> 오버라이딩을 통해 가능하다. 스프링을 이 wonsjung.tistory.com 높은 응집도와 낮은 결합도 개방 폐쇄 원칙은 높은..

오브젝트와 의존관계 - 2. 관심사의 분리 + 리팩토링

전 게시글에서 만들어본 UserDao 클래스이다. package jpaEx.toyP.tobispring; import javax.xml.transform.Result; import java.sql.*; public class UserDao1 { public void add(User user) throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection( "jdbc:mysql://localhost/springbook", "spring", "book"); PreparedStatement ps = c.prepareStatement( "inser..

오브젝트와 의존관계 - 1. 스프링의 기본, 오브젝트 이해하기

스프링은 자바를 기반으로 한 기술로 스프링이 자바에서 가장 중요하게 두는 것은 객체 지향 설계이다. 따라서, 스프링을 바르게 이해하기 위해서는 가장 먼저 오브젝트에 대한 기본적인 이해가 필요하다. 애플리케이션에서 오브젝트가 생성되고 다른 오브젝트와 관계를 맺고, 사용되고, 소멸되는 전 과정을 바르게 이해해야한다. 따라서, 이 글에서는 스프링에 대한 글이 아닌 오브젝트의 설계와 구현에 대해 살펴본다. 사용자 정보를 JDBC API를 통해 DB에 저장하고 조회할 수 있는 간단한 DAO를 만들어보자 DAO(Data Access Object) : DB를 사용해 데이트럴 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 사용자의 정보(id, name, password)를 가진 User 클래스를 만들어보자. 롬복..

Intellij 수정사항 재실행 없이 확인하기

Intellij로 개발을 하다보면 새롭게 추가하거나 수정한 것을 확인해야할 때가 있다. 이 때 실행 중인 서버를 다운시켰다가 다시 On하게 되면 시간도 더 걸리고 귀찮은 경우가 종종 발생한다. 이를 간단하게 해결할 수 있는 방법이 존재한다. 1. Intellij - build.gradle로 들어간다. 2. depandencies에 - implementation 'org.spingframework.boot:spring-boot-devtools' 를 추가한다. 3. 수정 또는 추가하고자 하는 코드 작성 4. 실행 중인 서버를 재시작 하는 것이 아닌 상단에 Build - recompile '수정클래스 또는 파일'을 클릭 5. 웹 페이지 새로고침 위 방법으로 해결 가능하다

주문과 할인 도메인 설계

주문과 할인 정책 ▶ 회원은 상품을 주문할 수 있다. ▶ 회원 등급에 따라 할인 정책을 적용할 수 있다. ▶ 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) ▶ 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 할인 정책에 대한 인터페이스 package spring.core.discount; import spring.core.member.Member; public interface DiscountPolicy { /* @return 할인 대상 금액 */ int discount(Member member, int price)..

회원 도메인 실행과 테스트

이전에 만들었던 회원 도메인이 잘 동작하는지 테스트해봐야한다. main 디렉토리 밑에 test디렉토리 안에 새로운 member Package를 생성해준다. 그리고 그 안에 memberServiceTest 클래스를 만들어준 후 우리가 만든 코드가 잘 동작하는지 확인해준다. // 회원 도메인 코드가 잘 동작하는지 확인하는 Test Code package spring.core.member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; public class MemberServiceTest { MemberService memberService = new MemberServiceImpl(); @Test void join(){..

회원 도메인 개발

회원 도메인 개발은 위 그림에 맞춰 역할과 구현을 나눠 개발할 것이다. 가장 첫 번째로, 회원 도메인을 개발할 것이므로 member라는 패키지를 생성해주자 그리고 그 안에 회원의 등급을 나눠줄 enum을 생성해준다 라는 이름으로 생성하였다. package spring.core.member; public enum Grade { BASIC, VIP } 그리고 회원 정보와 관련된 Member라는 클래스를 하나 생성해주고 그 안에는 id와 name, grade 정보를 선언해준다. 기본적으로 선언한 3개 파라미터에 대한 생성자와 getter/setter를 만들어준다 (윈도우의 경우 단축키 Alt + insert) package spring.core.member; public class Member..

728x90
반응형