본문 바로가기

Spring/스프링 입문12

[Spring] 7. AOP 1. AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 아래 그림처럼 각각 만들어서 넣어줘야 할까? MemberService 회원 조회 시간 측정 추가 package hello.hellospring.service; @Transactional public class MemberService { /** * 회원가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); //중복 회원 검.. 2023. 12. 3.
[Spring] 6. 스프링 DB 접근 기술 만약 이 강의를 따라하다 문제가 생겼다면 H2 웹을 다시 켜보기를 바랍니다... (제가 겪은 오류의 대부분은 H2 웹이 꺼져있어서 그랬던 거라...) 또 javax → jakatra 로 수정해주면 문제가 해결되는 경우들이 있었습니다. import를 제대로 했는지 확인하는 것도 방법일 것 같네요. 1. H2 데이터베이스 설치 H2 DB : 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 1.4.200 버전을 설치할 것 https://www.h2database.com 윈도우 사용자 기준 실행 : h2.bat DB 파일 생성 방법 최초 : jdbc:h2:~/test 파일 생성 확인 : ~/test.mv.db 이후 접속 : jdbc:h2:tcp://localhost/~/test 테이블 생성하기 테이블.. 2023. 11. 30.
[Spring] 5. 회원 관리 예제 - 웹 MVC 개발 1. 회원 웹 기능 - 홈 화면 추가 홈 컨트롤러 추가 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 회원 관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록 참고 : 컨트롤러가 정적 파일보다 우선순위가 높다. 2. 회원 웹 기능 - 등록 회원 등록 폼 컨트롤러 @Controller public cl.. 2023. 11. 27.
[Spring] 4. 스프링 빈과 의존관계 1. 컴포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원 서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자. 회원 컨트롤러에 의존관계 추가 package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller public class MemberController { private final MemberService memberService; @Autowired public Member.. 2023. 11. 9.
[Spring] 3. 회원 관리 예제 1. 비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클래스 의존관계 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 2. 회원 .. 2023. 10. 31.
[Spring] 2-3. API @ResponseBody 문자 반환 Controller @Controller public class HelloController { @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } } @ResponseBody를 사용하면 뷰 리졸버(viewResolver)를 사용하지 않음 대신 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG가 아님) 실행 : http://localhost:8080/hello-string?name=spring!! @ResponseBody 객체 반환 Controller @Controlle.. 2023. 10. 31.