📃 요약
실무에서는 MVC 디자인 패턴 속해서 스프링부트를 사용해 코딩을 진행함. 파일관리 시 파일을 용도에 맞게 정리하듯이 MVC 디자인 패턴도 패키지 및 클래스를 용도에 맞게 분류해서 코딩을 진행함
요소 기술 :
– Basic : java & spring boot
📃 기술 구현
스펙 :
- intellij - java - spring boot
📃 Model :
- - 함수 위에 요청받은 특정 url 이 있음 - return 값이 json 데이터임
Lombok :
- build.gradle 에 라이브러리 추가 (프로젝트 생성시 추가되었다면 생략)
// 롬북 라이브러리 #1 compileOnly 'org.projectlombok:lombok' // 롬북 라이브러리 #2 annotationProcessor 'org.projectlombok:lombok'
Lombok :
- 특수한 기능을 제공하는 어노테이션이 많음 - @Setter : 모델 클래스의 위에 사용해서 Setter 함수 자동생성 - @Getter : 모델 클래스의 위에 사용해서 Getter 함수 자동생성 - @ToString: 모델 클래스의 위에 사용해서 ToString() 함수 자동 재정의 - @NoArgsConstructor : 모델 클래스에 사용, 기본 생성자 자동 생성 - @AllArgsConstructor : 모델 클래스에 사용, 속성에 대한 매개변수가 모두 있는 생성자 자동 생성
사용법 : @Getter @Setter @ToString @NoArgsConstructor public class 클래스명 { private 자료형 변수명; private 자료형 변수명; ... } 예 : @Getter @Setter @ToString @NoArgsConstructor public class Board { private Integer id; private String title; private String content; @Builder public Board(Integer id, String title, String content) { super(); this.id = id; this.title = title; this.content = content; } }
@Service :
- 스프링 부트는 서버가 로딩될 때 객체를 미리 생성해서 관리하는데 이 때 미리 클래스명 앞에 붙이면 그 객체가 자동 생성됨(마크된 객체) - 클래스 위에 달고, 달린 클래스는 서버가 가동될때 자동으로 객체 생성됨(IOC) - 유사 어노테이션 : @Repository, @Component, @Bean 등 - 주로 서비스 클래스 위에 붙임 1) 서비스 : 주로 업무 로직(비지니스 로직)을 작성하는 클래스
@Autowired :
- 스프링 부트 서버가 로딩될 때 @Service 등으로 미리 생성된 객체를 이름으로 받아오고자 할 때 사용 - 스프링에서는 개발자가 직접 new 연산자로 객체 생성하는 것을 지양하고 스프링 이 객체를 생성하고 생성된 객체를 전달함
@Slf4j 환경 설정 :
- build.gradle 에 라이브러리 추가 :
... // todo: logback , log4jdbc 설정 implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' implementation 'ch.qos.logback:logback-classic:1.2.11' implementation 'org.slf4j:slf4j-api:1.7.36' implementation 'org.slf4j:jcl-over-slf4j:1.7.36'
@Slf4j :
- 로그를 출력하기 위한 인터페이스 - Façade 디자인 패턴으로 만들어짐, - 다양한 구현체 (Logback, Log4j2 등) 를 상황에 맞게 끼울 수 있음(다형성) - Lombok 에서 제공함 - 설치 : Logback 프러퍼티 파일2개 복사, build.gradle 라이브러리 4개 추가 1) log4jdbc.log4j2.properties : sql 로그를 출력하기 위한 설정파일 2) logback-spring.xml : logback 의 다양한 레벨 옵션 설정 - 출력함수 : Trace > Warn > Info > Debug > Error 레벨 옵션이 있음 1) Trace : 가장 많은 로그 정보 2) Error : 가장 짧은 로그 정보 3) 주로 Debug 또는 Info 함수를 많이 사용함
사용법 : @Slf4j @Controller @RequestMapping("/공통url") public class 함수명 { @GetMapping("/url2") // /공통url/url2 public String getDeptAll(Model model) { 실행문; return "이동할jsp페이지명"; } } 예 : @Slf4j @Controller @RequestMapping("/exam01") public class DeptController { @Autowired DeptService deptService; @GetMapping("/dept") public String getDeptAll(Model model) { // TODO: 로그 찍기 log.debug(list.toString()); return "exam01/dept/dept_all.jsp"; } }