스프링/0. 입문, 전체방향 21

11장 스프링 빈 등록. 자동 의존관계 설정

스프링 빈 등록 방법 1. 자동 2. 직접 자바 코드로 이번에 배울 건 자동 스프링 뜰 때 맨처음 스프링 컨테이너가 생성된다. 그 때, @Controller public class MemberController { } 이런 식으로 @Controller가 있으면 이 객체를 생성해서 컨테이너에 넣어둔다.(싱글톤으로, 물론 싱글톤 아니게도 할 수 있음.) 그리고 스프링이 관리 함. @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; } 과거 이것도 스프링에서 컨테이너에 빈으로써 등록되어 접근..

10장 회원 서비스 테스트

class MemberServiceTest { MemberService memberService; MemoryMemberRepository memberRepository; @BeforeEach //코드 하기 전에 실행. public void beforeEach(){ memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @AfterEach //테스트 중 한 함수가 끝날 때 마다 이거 실행. public void afterEach(){ memberRepository.clearStore(); } @Test void 회원가입() { //테스트때는 한국인 기업이면 한글로도 쓴다고 함..

9장 회원관리 서비스 구현

G:\spring\hello-spring\src\main\java\hello\hellospring\service\MemberService.java public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //회원가입 public Long join(Member member){ //id는 임시로 반환하게 한 듯. //같은 이름일 시 중복회원 X validateDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Mem..

8강 회원관리 예제 테스트

main을 통해 실행하기에는 테스트하려는 것에 비해 너무 무거움. JUnit이라는 프레임워크로 손쉽게 테스트 먼저 test폴더에 G:\spring\hello-spring\src\test\java\hello\hellospring\repository\MemoryMemberRepositoryTest.java 보통 관례가 테스트할거 + Test가 클래스명임. public class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach //테스트 중 한 함수가 끝날 때 마다 이거 실행. public void afterEach(){ repository.clearStore(); } ..

7강 회원관리 예제

순서 비즈니스 요구사항 저일 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트케이스 작성 회원 서비스 개발 회원 서비스 테스트 비즈니스 요구사항. 데이터: 회원ID, 이름 기능: 회원 등록,조회 ※현재 DB를 뭘 쓸지 선정되지 않음(가상 시나리오) 개발부터 하는 상황 컨트롤러:웹MVC 컨트롤러 서비스: 핵심 비즈니스 로직 구현, 회원 중복 방지 로직 등, 도메인 객체를 가지고 핵심 비즈니스 로직 구현. 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등 데이터베이스에 저장되고 관리됨. 리포지토리: DB에 접근, 도메인 객체를 DB에 저장하고 관리. 도메인 객체란 여러 데이터와 동작을 갖고 있는.. 그러니까 만약 사용자를 나타내는 도메인이 있을 경우 이름, 이메일, 나이와 같은 데이터와 가입..

6강 API 방식으로 데이터 주기

앞서 정적 MVC API 방식이 있다고 했다. 정적은 html에 손 안댄거고, MVC는 html을 좀 바꿔서 웹브라우저에 주는거고, API는 특별한 형식의 데이터를 주는 방법이다. 그래서 사실 이거는 클라이언트와의 소통보다는 서버끼리의 소통이 알맞다. @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name){ return "hello " + name; } GetMapping은 누누히 설명 했고, @ResponseBody 이 부분이 좀 특별하다. 잘은 모르겠지만, 아마 나중에 배울건데 http에는 header부와 body부가 있는데, 그 body에 직접 넣어주는 거라고 한다. re..

5강 템플릿 엔진

G:\spring\hello-spring\src\main\resources\templates\hello-template.html 에 넣는 html로써, 템플릿이란 템플릿 프로세서를 사용하여 웹 템플릿을 결합하여 완성된 웹페이지. 라고 하는데 서버가 뭔가 html을 뭔가 바꾸어서 보내준다고 하니 spring에서 서버와 연동해서 뭔가 html을 바꾼다는 그런 뜻인거 같다. hello! empty hello! empty 여기 이 부분에서 hello! empty가 name을 받을 경우 'hello ' + ${name}" 로 대체된다. 일단, 기본적으로 Spring은 MVC 방식을 씀. @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") S..

4. 웹개발 기초

종류 웹개발은 크게 3가지 방식 정적 컨텐츠 : 파일 그대로 전달 MVC, 템플릿 엔진 (가장 많이 함) : 서버에서 html을 좀 변형해서 보내주는 형식 API : 특정 데이터 포맷으로 전달 정적 기본적으로 스프링에서 제공 G:\spring\hello-spring\src\main\resources\static 똑같이 localhost:8080/index.html 근데 이게 순서가 있는데, 먼저 2장인가에서 했던 컨트롤러에서 찾아보고, 없으면 static 찾아보는거임 index.html 이라도 Controller에서 먼저 찾고 그제야 없으면 이거 찾는거임.

3. 빌드

그냥 spring 프로젝트 경로 cmd 들어가서 mac : gradlew windows : gradlew.bat gradlew build gradlew clean gradlew clean build 빌드 후 실행시키는 방법 정상적으로 빌드가 되었다면, spring 폴더의 build/libs/hello-spring-0.0.1-SNAPSHOT.jar 라는 파일이 생긴다. java -jar hello-spring-0.0.1-SNAPSHOT.jar 하면 실행된다. 서버 배포 시 hello-spring-0.0.1-SNAPSHOT.jar 복사해서 서버에 넣어주고, java -jar hello-spring-0.0.1-SNAPSHOT.jar 해서 서버에서 실행하면 서버에서도 spring이 동작 하게된다.

2장 thymeleaf

@Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!!"); return "hello"; } } @GetMapping("hello") 가 hello라는 명령이 들어올 경우, localhost:8080/hello 저 아래 함수를 실행. Model이란 것으로 다루고, return "hello"인데, hello.html을 찾는거임. 거기에 model까지 같이 넘겨주는거임. ( resources:templates/ +{ViewName 안녕하세요. 손님 th가 thymeleaf라는 뜻이고, data (키)에 넘긴 hello!! 안녕..