Back-end
컴포넌트 스캔
컴포넌트 스캔 설정정보 없이도 자동으로 스프링 빈을 등록해주는 기능 (원래는 개발자가 설정정보에 등록할 스프링 빈을 매번 나열해야했는데 누락될 가능성도 있고, 반복적인 작업이라는 단점이 있어 생겨난 기능이다) 원하는 위치부터 컴포넌트 스캔하는 방법 @ComponentScan{ basePackages = "hello.core", } 패키지 위치를 지정하지 않고, 설정 정보 클래스의 위치를 프로젝트 최상단에 두는 것도 괜찮은 방법이다. 필터 includeFilters : 컴포넌트 스캔 대상을 추가로 지정. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정. 중복등록과 충돌 자동 빈 등록 vs 자동 빈 등록 : ConflictingBeanDefinitionException 발생 수동 빈 등록..
싱글톤
싱글톤 패턴 클래스의 인스턴스가 딱 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..