스프링프레임워크

    싱글톤

    싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용 public static SingletonService getInstance() { return instance; } //3. 생성자를 private으로 선언해서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다. private SingletonService() { } ..

    스프링 컨테이너와 빈

    구현체가 여러개라면? 만약 OrderService 인터페이스에 대한 구현체가 하나라면, 일반적으로는 구현체의 이름을 OrderServiceImpl이라고 한다. 하지만, 구현체가 여러개라면 각 구현체의 특성에 맞게 이름을 생성한다. @BeforeEach : 테스트 코드 실행 전 반드시 실행되는 것으로, 테스트 코드가 2개면 2번 실행된다. class MemberServiceTest { MemberService memberService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); } } 스프링 컨테이너와 빈 스프링 컨테이너 Applica..

    좋은 객체 지향 설계의 5가지 원칙(SOLID)

    좋은 객체 지향 설계를 하기 위해서는 지켜야할 아래 5가지 원칙들이 있다. SRP: 단일 책임 원칙(single responsibility principle) : 한 클래스는 하나의 책임만 가져야한다. 변경을 할 때, 많은 것을 바꾸지 않아도되는지가 중요하다. OCP: 개방-폐쇄 원칙 (Open/closed principle) : 확장에는 개방되어있고, 변경에는 폐쇄적인 구조를 의미한다. 보통 이 원칙을 지키기 위해 역할과 구현을 분리한다(다형성 이용). LSP: 리스코프 치환 원칙 (Liskov substitution principle) : 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다. ISP: 인터페이스 분리 원칙 (Interface segregation p..

    스프링 웹개발 방법(컨트롤러의 view 호출 방법)

    스프링으로 웹 개발을 하는 방법에는 크게 세 가지가 있다. 그 방법은 아래와 같다. 1. 정적컨텐츠 http request로 localhost:8080/hi.html을 요청하였는데, 컨트롤러에서 해당 액션메소드를 찾을 수 없다면, resources/static/hi.html를 찾는다. 2. MVC와 템플릿 엔진 Model, View, Controller를 이용하는 방법이다. 컨트롤러의 액션메소드에서 view의 이름을 return하면, 해당 이름의 view 파일이 호출된다. 컨트롤러) @Controller public class HiController { @GetMapping("hi") public String hi(@RequestParam("name") String name, Model model) { ..

    @AfterEach, 어노테이션, MVC패턴의 호출 경로

    test 코드 test/java 밑에는 test코드를 만들어서 실행하는데, 이 때 test코드의 실행 순서는 랜덤이다. 따라서 일부 테스트가 db 데이터의 영향으로 제대로 실행되지 않을 수 있다. 이 현상을 해결하기 위해 아래 코드를 삽입해준다. @AfterEach //테스트가 끝날 때마다 db데이터를 삭제해줌 public void afterEach() { repository.clearStore(); } 위 코드는 테스트 메서드가 하나가 끝날 때마다 db 데이터를 삭제해준다. 어노테이션 @Controller, @Service와 같은 어노테이션은 스프링 빈에 자동으로 등록해주는 것이고, @Autowired는 스프링 컨테이너에 대입해서 바로 사용할 수 있게 하는 어노테이션이다. MVC 패턴의 호출 경로 vi..