본문 바로가기

Java

(31)
Reactive streams Interface 1. Publisher 인터페이스 subscribe 메서드를 통한 Subscriber를 등록하는 역할을 담당한다. public interface publisher { public void subscribe(Subscriber
SpringBoot Bean 중복 처리(필드명 수정을 통한 방법) 인터페이스를 사용하다보면 같은 반환 타입을 가진 bean을 설정할 때가 분명히 있다. 이 경우 정확히 명시해주지 않으면 Spring은 다음과 같은 에러를 띄운다. 위 에러는 TestController가 요청하는 bean은 하나인데 반해, 같은 반환 타입을 가진 bean이 세 개 발견되어 나타나는 에러이다. 정확히 어떤 bean을 사용할 것인지 반드시 제대로 설정을 해줘야 한다. 친절하게도 Spring에서 친절하게 해결 방안을 알려준다. @Primary와 @Qurlifier을 이용한 우선순위를 정하는 방법이 가장 많이 쓰이는 것으로 알고 있다. 난 위 두 어노테이션의 힘을 빌리기보다 매우 기본적인 방법으로 bean의 중복을 처리하고자 한다. 위 두 가지의 bean이 존재한다. 인터페이스의 구현체 2 종류로..
Spring Boot + MyBatis 스프링부트를 사용할 때 거의 JPA만 사용했었는데, 때에 따라 MyBatis도 사용하면 괜찮을 것 같았다. 실제로 여러 개발 블로그를 보니 혼용으로 사용하는 분들이 꽤나 많았기에 나도 한 번 그렇게 해봐야겠다라는 생각이 들었고.. 시작이 반이다라는 느낌으로 Spring Boot + MyBatis를 어떻게 사용하는지 간략하게 기록해본다. 1) build.gradle 참고로 현재 Spring Boot와 jsp, Mybatis를 혼용해서 공부를 하고 있다. 그래서 스프링에서 jsp 사용을 위한 tomcat-jasper가 디페던시 되어있고 나머지 mysql과 mybatis를 설정해주도록 하자. 참고로 순서는 뭐가 먼저고 그런건 없으니 그냥 참고.. 2) application.properties spring에게 ..
Jsp에서 WAS(tomcat)의 작업 http:://localhost:8100/index.jsp가 브라우저에 띄워져 있다면 과연 WAS는 요청을 처리하는 과정을 간략히 정리했다. WAS는 다음과 같은 작업을 실행하게 된다. 첫번째 실행 - index.jsp가 실행되면 index_jsp.java 파일이 생성된다. - 문법 오류가 없다면 자동으로 컴파일되어 index_jsp.class 파일이 생성된다. - 메모리에 올라간다. - _jspInit() 메소드를 호출한다. 두번째 실행 - _jspService() 메소드를 호출한다. => Service 메소드는 doGet, doPost 요청을 전부 소화할 수 있다. 위 두 과정은 간단해 보이지만, 중요한 과정이니 꼭 숙지해야한다.
Servlet 브라우저 response 인코딩 필자는 이클립스를 사용한다. 이클립스에서 UTF-8 설정을 완료했음에도 불구하고 브라우저에서 한글이 깨져있었다. 원래는 연습! 이다.. 원인은 servlet에서 html코드 삽입 시 요청, 응답에 대한 인코딩 처리를 따로 해줘야 한다. 방법은 매우 간단하다. 내가 작성한 servlet 상의 html 코드를 브라우저로 표출하는 것이기 때문에 응답에 대한 인코딩 처리를 해주면 된다. response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.println(""); out.println("연습!"); out.println("
Servlet&JSP 프로젝트 시작 설정 (프로젝트 생성) 앞 포스트에 이어 이번에는 프로젝트 생성을 해보도록 한다. 1. 먼저 new를 누르고 Dynamic Web Project를 생성한다. 그러면 아래 화면이 나올텐데 여기서 중요한 점은 톰캣을 먼저 설정해두었기에 후에 다시 연동 작업을 하기 싫다면 아래와 같이 Target runtime을 잘 설정해주어야 한다. v8.5로 선택하고 프로젝트 이름을 원하는 것으로 입력 후 Next를 누른다. 2. 위 화면에서 Next를 누르면 아래와 같은 화면이 나온다. 이 화면은 자바 소스 및 클래스 파일의 저장 폴더 경로 정보이다. Next 버튼을 누르도록 하자. 3. 다음 화면은 웹 컴포넌트(html, jsp, servlet 및 이미지 파일)를 저장하는 디렉터리와 웹 컨테이너가 논리적으로 관리하는 이름인 Context를 ..
Servlet&JSP 프로젝트 시작 설정 (WAS) Servlet과 Jsp를 사용하기 앞서 먼저 WAS 설정부터 들어가보자. 톰캣 8.5 버전을 사용한다. 1. 하단에 보면 Servers 라고 되어있는 메뉴를 클릭하여 아래 창이 나오도록 하자. 그리고 클릭한다. 2. 톰캣 8.5 버전을 선택한다. 3. 기존에 프로젝트를 먼저 생성했다면 왼쪽 Available에 프로젝트가 나올 것이고 생성을 안한 상태라면 아무것도 안나올 것이다. 이는 스스로가 잘 판단하여 서버를 연동시킬 것인지 안할 것인지 알아서 판단하자. 아래는 WAS 추가가 된 상태. 4. 위에 사항이 완료됐다면 Tomcat v8.5 Server ~~~ 를 클릭한다. 클릭 후 Overview 창이 나온다. 여기서 Server Location는 두번째 체크박스 Use Tomcat installation..
@JsonManagedReference와 @JsonBackReference 프로젝트 중 양방향 관계에 있어 순환참조가 반복됐다. 순환참조가 발생하여 결국 스택 오버 플로우에 빠지게 됐고 프로그램을 정상적으로 실행하지 못하게 된 상황. 이는 A가 B를 부르고 B가 A를 부르게 되면 나오는 상황이다. 끝없이 부르게 되니 스택 오버 플로우에 빠지게 된 셈. 이를 해결하기 위해 DTO에서 필요한 데이터만 응답하게끔 바꾸는 방법도 있지만, 스프링의 Jackson 라이브러리의 @JsonManagedReference와 @JsonBackReference 어노테이션을 사용하여 위 상황을 방지할 수도 있다. 먼저 순환참조가 일어났을 때 에디터 및 포스트맨에서 어떤 반응이 나오는지 살펴보자. 게시글 엔티티와 댓글 엔티티를 만들어 게시글 1 : 댓글 N 관계로 맵핑하였다. // 게시글 엔티티 @On..