MVC 패턴, DI 방법 세가지, H2 DB 생성

inhalin·2022년 7월 13일
0

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 정리한 내용입니다.

유용한 단축키

IntelliJ

  • command + shift + T : 해당 클래스에 있는 메소드를 선택해서 자동으로 테스트 클래스를 만들 수 있다.
  • command + option + V : 해당 라인 코드의 변수 추출

H2

  • shift + enter : 쿼리 실행

스프링 패턴

  • Controller로 외부 데이터 받고,
  • Service로 비즈니스 로직 만들고,
  • Repository에서 데이터 저장하는 것이 정형화된 패턴임.
  • MVC 패턴은 Model-View-Controller 패턴으로 모델은 비즈니스 로직과 데이터 처리를 수행하고 뷰는 사용자에게 보여지는 것만 책임진다. 컨트롤러는 그 사이에서 뷰가 요청하는 내용을 받고, 요청에 필요한 내용을 모델에서 처리하면 그 응답내용을 다시 컨트롤러가 받아서 뷰로 넘겨준다. MVC 패턴을 사용하면 사용자에게 보여지는 부분과 비즈니스 로직을 처리하는 부분을 분리할 수 있다.

DI - Dependency Injection이란

DI는 구체적인 의존성을 끊기 위한 방법으로 개발자가 직접 의존성을 지정해주는 게 아니라 객체가 어떻게 생성되야 하는지 의존성을 명시적으로 지정하고, 객체 생성시에 IoC 컨테이너가 알아서 필요한 의존성을 주입하는 방법이다.

DI 구현 방법 세 가지

  • 필드 주입
@Autowired private MemberService memberService;
  • setter 주입
private MemberService memberService;

@Autowired
public void setMemberService(MemberService memberService) {
	this.memberService = memberService;
}
  • 생성자 주입 -> 의존 관계가 실행 중에 바뀌지 않도록 이 방식을 권장함
private final MemberService memberService;

@Autowired
public MemberController (MemberService memberService) {
	this.memberService = memberService;
}

H2 데이터베이스 생성

디비 생성이 제대로 안되는 경우

./h2.sh로 디비 서버 실행 후 웹 콘솔에서 디비 생성이 제대로 안되고 아래와 같은 에러 메시지가 나오는 경우

Database "User/inhalin/test" not found, either pre-create it or allow remote database creation(not recommended in secure environments)

터미널에서 디비를 바로 생성해줄 수 있다.
참고: h2database tutorial - 새 디비 생성하기

~ % java -cp h2-*.jar org.h2.tools.Shell

Welcome to H2 Shell 2.1.214 (2022-06-13)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       
[Enter]   org.h2.Driver
Driver    
[Enter]   
User      sa
Password  
Type the same password again to confirm database creation.
Password  
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> quit
Connection closed

# 디비 서버 실행하기
~ % java -cp h2*.jar org.h2.tools.Server

0개의 댓글