spring

스프링 2주차 스터디

조쿼카 2022. 1. 20. 21:32

[웹 MVC 개발]

정적 컨텐츠 - 요청이 오면 관련 컨트롤러가 있는지 먼저 찾고 없으면 static 파일을 찾도록 되어있다.

HomeController에서 먼저 찾아봄 -> mapping된 것이 있으면 해당 컨트롤러 호출하고 끝남

--> 다른 html 파일은 무시된다.

 

 

 

@GetMapping("/members/new")  //조회할 때 주로 사용
public String createForm(){
    return "members/createMemberForm";
}

@PostMapping("/members/new")  //data를 form에 넣어서 전달할때 사용
public String create(MemberForm form){
    Member member=new Member();
    member.setName(form.getName());

    memberService.join(member);

    return "redirect:/";  //회원가입이 끝나면 홈화면으로 보내기
}

회원가입을 들어가면 /members/new로 들어가게 된다.

/members/new로 매핑되어서 createMemberForm.html로 이동하게 된다.

thymeleat 템플릿 엔진이 해당 html를 렌더링 하게 된다.

 

url은 똑같지만 get이냐 post냐에 따라서 다른 방식으로 진행되게 된다.

GetMapping : 데이터 조회

PostMapping : 데이터 등록

 

[HTML 태그]

<form태그> 값을 입력할 수 있는 태그

 

<input태그> name이 서버로 넘어갈 때 key가 된다</input태그>

<input type="text" id="name" name="name" placeholder="이름을 입력하세요">

 

 

 

 

 

[데이터베이스 연결]

h2 데이터베이스

연결할 때 다음 url 사용하기

똑같은걸 연결시켜 주기 위해 DataSourceUtils를 통해서 connection, release 해야한다

 

 

 

[순수 Jdbc]

JdbcMemeberRepository파일 추가하고 SpringConfig파일만 수정만 하면 됨

-> 기존 파일에는 손댈 필요가 없다 !!

public class SpringConfig {

    private DataSource dataSource;

    @Autowired
    public SpringConfig(DataSource dataSource){
        this.dataSource=dataSource;
    }

    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){

//        return new MemoryMemberRepository();
        return new JdbcMemberRepository(dataSource);
    }

}

 

스프링 컨테이너가 다형성[객체지향의 특성]을 지원해준다. => 스프링의 장점

구현체가 <memory> memberRepository에서 <jdbc> memberRepository로 바뀐다

개방 폐쇄 원칙이 지켜진 것

기존 코드는 바꾸지 않으면서 설정만으로 구현 클래스 변경 가능

 

 

 

[스프링 통합 테스트]

@SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.

@Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다. [각각의 테스트마다 수행됨]

-> 이렇게 하면 DB에 데이터가 남지 않기 때문에 다음 테스트에 영향을 주지 않는다. [@AfterEach 대신 사용]

 

 

 

[스프링 JdbcTemplate]

순수 Jdbc와 동일한 환경설정을 하면 된다.
JDBC의 반복 코드를 대부분 제거해준다. but SQL은 직접 작성해야함

 

 

 

Jdbc -> JdbcTemplate = 반복적인 코드가 확 줄어든다.

Jpa -> 알아서 sql을 만들어주고, 객체 중심의 설계로 바꿔주며 개발 생산성을 크게 높일 수 있다.

 

 

[Jpa]

반복 코드 없애줌 + SQL도 직접 만들어서 실행해줌

query문 작성 없이 data 객체 저장

@Transactional 이 반드시 존재해야한다.

 

EntityManager 필요

 

 

[스프링 데이터 JPA]

 

인터페이스 작성만으로 끝나버린다.

대부분의 기본 메서드(CRUD)가 모두 제공된다.

 

 

 

[AOP] Aspect Oriented Programming

모든 메소드의 호출 시간 측정?

공통 관심 사항 vs 핵심 관심 사항을 분리할 수 있다.

Proxy라는 가짜 memberRepository를 만들어서 진행한다.

 

 

'spring' 카테고리의 다른 글

스프링 스터디_마지막  (0) 2022.02.24
스프링 스터디 6주차  (0) 2022.02.17
스프링 스터디 5주차  (0) 2022.02.10
스프링 스터디 4주차  (0) 2022.02.03
스프링 스터디 3주차  (0) 2022.01.27