spring

    Spring-Rest Docs(2)

    목차 Spring-Rest Docs(1) Spring-Rest Docs(2)

    졸작 프로젝트 마무리

    프로젝트를 마무리하면서 부족했던 부분을 정리하고자 한다 처음으로 스프링을 사용해서 처음 부터 끝까지 진행한 프로젝트이고 많은 어려움이 있었지만 완벽하다고는 하지 못하지만 완성을 해냈다 아쉬웠던 점 컨트롤러에서 Entity 노출 JPA를 사용하면서 몇몇 엔티티에 양방향 관계를 맺어 둔 것이 있다 개발을 첫 시작할때만 해도 우선 기능이 돌아가게끔 만들자라는 생각 뿐이었고 뷰에 반환 하는 값에 대해서는 전혀 생각을 하지 않고 있었다 이부분이 화두의 시작이었다 뷰에 반환하는 값에 양방향 관계를 맺은 값이 포함이 되었고 순환참조의 문제가 생기게 되었다 경험해보지 못한 오류상황이었고 꽤 긴시간 골머리를 앓았던 기억이 있다 그 당시에는 DTO를 만들어서 보낼 생각은 하지 않은채 결국 문제만 해결하기 위해 @JsonI..

    졸작 도메인 구성

    졸작 도메인 구성

    개요 졸작을 위해 만든 프로젝트를 정리 사용기술 Spring boot JPA thymeleaf MySQL H2(테스트 용도) 도메인 설계 기본 시간 사용자 정보 작성 위 ERD를 보면 알 수 있듯이 저장되는 거의 모든 엔티티에 시간정보와 사용자 정보를 기본으로 입력을 하도록 설정을 하였다 모든 엔티티에 직접 작성하여 넣을 수도 있지만 하나의 클래스로 도출하여 값만 상속을 받을 수 있도록 설계를 하였다 하지만 어느 엔티티는 시간정보만 다른 엔티티느 시간, 사용자 정보둘다 필요로 하기 때문에 위 문제는 아래와 같이 두개의 클래스로 나누어서 사용을 하였다 @Getter @MappedSuperclass public class TimeInfo { @Column(name = "CREATED_AT", updatabl..

    Spring - 예외처리

    서블릿 예외처리 예외가 발생할 경우 ex) RuntimeException... response.sendError()로 예외를 전달 할 경우 --> 당장 예외가 발생하는 것이 아니라 서블릿 컨테이너에 전달, 응답전에 컨테이너가 확인 어플리케이션 내에서 예외처리가 되지 않을경우(try~catch) WAS까지 예외 전달 되어 예외페이지 출력된다 예외페이지 등록 예외페이지 등록 web.xml 404 /error-page/404.html java @Component public class WebServerCustomizer implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableWebServerFactory factor..

    Spring-filter interceptor

    서블릿 필터 필터내에서 특정 조건을 만족하지 못한다면 해당 필터에서 끝을 내고 컨트롤러를 호출하지 않도록 제어하는 역할이다 체인 형식으로 여러개의 필터를 순차적으로 등록하여 사용할수 있다 로그인관련에서 사용 흐름 Http 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 호출 Interface Filter인터페이스를 상속받아서 구현을 한다 public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //초기화시 호출 } @Override public void doFilter(ServletRequest request, ServletResponse..

    Spring-MVC4 에러검증2

    에러 검증 Bean Validation 이전에 사용했던 Validator를 상속받아 사용했던 특정 검증기와는 다르게 검증 어노테이션을 이용하여 검증을 하는 방식이다 설정 xml 설정방법 스프링 관련 설정 : @EnableWebMvc어노테이션을 사용하면 OptionalValidatorFactoryBean을 글로벌 validator로 등록 dependency 설정: maven javax.validation validation-api 2.0.1.Final org.hibernate hibernate-validator 7.0.2.Final dependency 설정: gradle implementation 'javax.validation:validation-api:2.0.1.Final' 참고 http..

    Spring MVC3 - Error검증

    에러 검증 Validator 컨트롤러에서 아래 검증기를 호출을 하여 만약 에러가 있다면 특정 페이지로 이동 혹은 다시 페이지 호출 등 행동을 취할 수 있다. public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return true; } @Override public void validate(Object target, Errors errors) { //검증 로직 /* * 아이디 공백이 아닌지 * 비밀번호 공백이 아닌지 * 정확한 값 타입이 입력이 되었는지 등등 * 필요한 검증 로직 들어가면 됨 */ } } BindingResult, Errors BindingResult는 Errors..

    Spring MVC2

    메세지 사용이유 다양한 화면에서 하나의 텍스트 메세지를 한 곳에서 관리하고 사용하도록 하기 위해서 사용된다 메세지 설정방법 resources파일 아래에 messages.properties파일을 만들어서 안에 key-value형식으로 값을 설정을 해둔다 메세지 사용방법 @Configuration public class MessageConfigJava { @Bean public MessageSource messageSource(){ ResourceBundleMessageSource message = new ResourceBundleMessageSource(); message.setBasenames("messages", "messages_en"); message.setDefaultEncoding("utf-8"..

    Spring MVC1

    Spring MVC1

    Spring MVC기본 흐름 구성 요소 설명 DispatcherServlet 클라이언트 요청 전달받는다 컨트롤러로부터 view전달받아 응답 생성 HandlerMapping 요청 URL로부터 어떤 컨트롤러를 사용할 지 결정 HandlerAdapter 처리 요청을 컨트롤러에 전달 Controller 로직 처리 (개발자 구현 부분) ViewResolver 물리적인 경로를 논리적 경로로 변경 View JSP thymeleaf html등 화면 구성 (개발자 구현 부분) HandlerMapping, HandlerAdapter 구현객체 태그를 이용해서 설정 ViewResolver 구현객체 만약 전달받은 물리적 경로가 hello면 /WEB-INF/views/hello.jsp로 반환되어 전달 컨트롤러 구현 모든 컨트롤러..

    JPA시작

    JPA공부함에 있어서 내용은 인프런 김영한님 강의와 책을 참고하여 정리한 것입니다 (필기 및 공부정리용) https://www.inflearn.com/course/ORM-JPA-Basic# 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔 www.inflearn.com JPA공부 시작 이전에 JSP웹을 만드는 것을 공부하면서 DB접근에서 jdbc를 사용하여 개발을 하였는데 너무 반복적인 일만 하고 데이터베이스와 웹을 연결하는 역할 만을 하는 것을 느꼈고 귀찮음이 생겨 찾아보니 JPA를 통해..