SPRING(31)
-
스프링 빈 등록 방법
스프링 빈 등록 방법1. 컴포넌트 스캔 이전 글에서 프로그램을 실행하면 스프링 프레임워크가 특정 범위에 있는 특별한 표식을 읽어 '스프링 빈'을 생성하고, 컨테이너에 등록한다고 했다. 이전 글에서 특별한 표식의 예로 @Controller , @Service , @Repository 등으로 들었는데 이 애노테이션을 거꾸러 거슬러 올라가 보면 @Component 애노테이션을 발견할 수 있다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Repository { @AliasFor( annotation = Component.class ) String value() defa..
2024.02.25 -
의존 주입
MemberService 에서 MemberRepository 를 사용하기 위해서는 1. MemberService 의 인스턴스를 생성한다. 2. MemberRepository 의 인스턴스를 생성한다. 3. MemberService 에서 MemberRepository를 참조하여 접근. 사용한다. 의 과정을 거쳐야 한다. 그런데 말입니다. Service와 Repository가 밀접한 연관을 가지고 있고, Service가 Repository를 자주 사용한다고 할 때, Repository를 매번 생성하게 되면 무슨 일이 벌어지게 될까요? 이전 테스트 글에서 학습했던 것처럼 테스트의 결과가 다 따로 놀게 될 것입니다. Sevice를 동작시킬 때 마다 계속해서 새로운 MemberRepository를 생성하기 때문입니..
2024.02.25 -
테스트 코드 작성 시의 에로사항
class MemberServiceTest { MemberService memberService = new MemberService(); void join() { // given Member member1 = new Member(); member1.setName("회원가입테스트용1"); // when memberService.join(member1); // then assertThat(member1.getId()).isEqualTo(1); } @Test void findMembers() { } @Test void findOne() { //when Member foundMember = memberService.findOne(1L).get(); //then assertThat(foundMember.getNa..
2024.02.24 -
웹 개발 방식_API
MVC + 템플릿 엔진을 통해 view를 반환할 때엔, Controller 에서 Model에 값을 담아 String 문자열을 반환 -> ViewResolver 를 통해 해당 템플릿을 찾고 거기에 데이터들을 바인딩해서 노출했었음. 그런데, 서버 - 서버 의 통신 등에서는 View 등이 있을 필요가 없음. 서버끼리 화면 보여줄 일 있음? 없음. 위의 예시처럼, 화면이 필요 없는 경우도 더러 있음. 이럴 땐 데이터만 있으면 되고, 데이터만 넘겨주면 됨. Http 프로토콜의 Body부에 값을 직접 때려박을 수 있음. 방법? Controller 에서 메서드에 @ResponseBody 애노테이션을 달아주면 됨. 이를 통해 반환되는 값이 HttpResponse 의 body에 바로 담기게 됨. @ResponseBody..
2024.02.21 -
@RequestParam
@GetMapping("study-mvc") public String studyMvc(@RequestParam(value = "name", required = false) String name, Model model) { model.addAttribute("name", name); return "studyMvc-template"; } 이전 글에서 위와 같은 코드를 작성 했었음. @RequestParam 이 뭐지? 위의 메서드에서 @RequestParam은 Get 방식 요청 URL에 입력한 값을 매개변수에 묶어주는 역할을 함. localhost:8080/study-mvc?name=Param @RequestParam(value = "name") 을 통해 위의 localhost:8080 ~~?name=para..
2024.02.21 -
웹 개발 방식_MVC + 템플릿 엔진 방식
MVC 방식이란? Model, View , Controller 으로 3개의 계층으로 관심사를 나누어 개발하는 방식임. 여기에 동적인 데이터 할당을 위해 템플릿 엔진을 곁들여 주는 것이 MVC + 템플릿 엔진 방식임. 템플릿 엔진? 템플릿 엔진은 템플릿 양식(변수 따위)에 특정 데이터를 넣어 결과 문서를 출력하는 엔진임. 현재 학습상에서 템플릿 엔진은 thymeleaf 임. thymeleaf 는 Server Side Randering 방식임. 일단 그런 게 있다는 걸 알아두고 심화는 나중에 해볼 예정. 아무튼, mvc + 템플릿 엔진 개발 방식 = 관심사를 크게 3개(model, view, controller)로 나누고, 템플릿 엔진을 통해 특정 데이터들을 렌더링해서 view에 뿌려주는 방식임. 렌더링? ..
2024.02.21