1230 강의 정리

호두·2023년 12월 31일
0

공부

목록 보기
25/25
  1. 프로젝트 생성 과정 및 구조 정리 필요 / 기존 이해하고있는 과정 등 정리 필요

  2. gradle 프로젝트
    1) 의존성 관리
    maven의 pom.xml처럼 gradle의 gradle.build 파일이 의존성을 관리해준다. (버전 관리 + 의존성 당겨오기)
    스프링 부트 (주요) 라이브러리
    1. spring-boot-starter-web
    spring-boot-starter-tomcat, spring-webmvc가 포함되어 있다.
    2. spring-boot-starter-thymeleaf
    3. spring-boot-starter: 스프링 부트 + 스프링 코어 + 로깅
    2) 빌드하기
    gradlew build 명령어(또는 gradle.bat 실행인데 1230 기준 컴파일도 안 됨)로 jar를 생성할 수 있다.
    이 안에 톰캣이 내장되어 있으므로 java -jar 로 실행하기만 하면 localhost가 뜬다
    에러시 gradle build clean 명령어로 클린 후 재빌드

  3. MVC 패턴
    MVC: Model, View, Controller로 나누어 개발하는 "패턴", "스타일"
    과거에는 View와 Controller가 분리되어있지 않았다. ex) jsp가 수천 라인, db마저 여기서 관리
    view는 화면을 그리는 데 집중, controller/model은 내부적인 로직을 처리하는 데 집중하기 위해 분리하였다.

  4. @ResponseBody를 사용한 APi방식 / @ResponseBody의 원리
    기본 정책: 이 어노테이션에서 객체를 return하면 json방식으로 변환하여 http응답에 반환하겠다.
    viewResolver가 아닌 HttpMessageConverter 하위의 JsonConverter(MappingJackson2HttpMessageConverter - 기본 객체처리)
    또는 기본 문자처리 StringConverter(StringHttpMessageConverter)가 동작하여 응답해줌.
    * 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택된다.

  5. 스프링 컴포넌트 스캔, 자동 의존관계 설정
    컨트롤러(요청 받기) -> 서비스(비즈니스 로직) -> 리포지토리(데이터 저장)
    컨트롤러에서 생성자에 @Autowired 애노테이션을 통해 this(final memberService)를 지정(의존관계 주입),
    서비스에 @Service, 리포지토리에 @Repository 어노테이션을 지정(@컴포넌트 애노테이션이 포함되어있음)

SpringConfig 클래스를 생성해 자바코드로 직접 설정하는 방법도 있다. @Configuration 어노테이션 붙이고, 서비스 등에 @Bean 어노테이션 설정.
컨트롤러는 @Controller, 안에 서비스에 @Autowired 붙여주어야함.

왜 컴포넌트 스캔, 자바코드 직접설정 두 가지 방법을 사용하느냐?
상황에 따라 구현 클래스를 변경(교체)해야 하면 후자를 사용한다.


DB
JDCB: 애플리케이션 서버 - 데이터베이스를 연결하기 위한 기술(자바가 db와 붙을 때 필요로 하는 드라이버)
JPA: 쿼리 없이 객체로 DB에 저장/관리할 수 있음. Spring JPA 기술 - JPA를 한 번 감싼 기술(향상됨)

이하 수업자료 참고하기
1. Gradle에 JDBC 라이브러리, db 클라이언트(예시로 h2) 라이브러리 추가 후 그래들 리로드
2. application.properties에 적으면 스프링부트가 엄청 간단하게 설정해줌...
3. repository에 JdbcMemberRepository 클래스 만들고 DataSource 객체를 필요로 하고 생성자에 this.dataSource로 넣어주면 스프링이 커넥션 만들어줌... 이후 메소드에서 dataSource.getConnection 방식을 썻음

스프링 jdbcTemplate -> mybatis와 비슷한 라이브러리 // 위에서 ds.getconnection의 반복코드를 없애줌

private JdbcTemplate jdbcTemplate;
@Autowired
public JdbcTemplateMemberRepository(DataSource dataSource){
jdbcTemplate = new JdbcTemplate(dataSource);}

! 스프링부트 구조에서 jdbc사용할거면(순수jdbc말고 mybatis 또는 jdbcTemplate) sql문 뭐 xml을 쓸건지, 구조는 어떻게 할건지 조사가 필요해보임 xml에 할 것인가?

profile
web developer

0개의 댓글