분류 전체보기320 Spring) @ExceptionHandler(Exception.class)가 동작하지않음. public class ExceptionHandlerAdvice extends ResponseEntityExceptionHandler ResponseEntityExceptionHandler의 상속을 지워준다. @ExceptionHandler(Exception.class) not handling all types of exceptions I am trying to handle all Types of exceptions using @ExceptionHandler(Exception.class). But it's not handling all types of exception. When I am trying to access wrong HTTP method from postman/ b... stackoverfl.. 문제해결 2023. 1. 25. Spring] 예외처리 (@ExceptionHandler , @ControllerAdvice,@RestControllerAdvice), 에러코드,실제 적용 [미완] @ExceptionHandler @ExceptionHandler는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. @ExceptionHandler라는 어노테이션을 쓰고 인자로 캐치하고 싶은 예외클래스를 등록해주면 끝난다. 모든 예외를 캐치하고싶다면 Exception.class로 @ExceptionHandler(NullPointerException.class) public Object myExceptionHandler() { log.info("핸들러가 실행되었습니다."); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); return "컨트롤러.. Spring/Spring 2023. 1. 24. 9)요청매핑 @RestController public class MappingController { private Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic() { logger.info("basic"); return "ok"; } } @RequestMapping({"/hello-basic","/hello-go"}) public String helloBasic() { logger.info("basic"); return "ok"; } { } 안에 url를 여러개 넣어서 매핑할 수 있다. @RequestMapping(value = {"/hello-basic", "/hel.. 인프런/스프링 MVC 1편 2023. 1. 20. Spring Profile마다 Application.* 다르게 사용하기 [미완] 현재 배포환경이 local인지 개발서버인 dev인지 프로덕션서버인 prod인지 등 서버의 배포환경에 따른 설정값들이 다를것이다 ( Spring Profile 마다 application.* 매핑하기 (파일이름으로 매핑) application.properties를 사용한다고 할때 application-local.properties application-dev.properties application-prod.properties 이런식으로 파일을 추가적으로 만든다고하면 Spring profile이 local일때는 application-local.properties를 가지고 서버 동작시키고 Spring profile이 dev일때는 application-dev.properties를 가지고 서버 동작시키고 Spri.. Spring/Spring 2023. 1. 20. 스프링환경설정파일(.properties,.yml),노출되면 안되는 정보 파일 관리, 빌드/배포 [미완] Spring boot 프로젝트를 github public repository에 올리게 되면 application.* 또는 노출되면 안되는 정보가 적힌 파일이 노출될 수 있다. 외부에 중요한 정보가 노출되지 않고 팀과 파일 공유 / 빌드,배포하는 방법을 알아보자 1. git ignore 중요한 파일들을 .gitignore 설정하여 깃허브 리포지토리에 올라가지않게 하는 방법이다. 하지만 application.* 등 빌드에 필요한 파일들은 빌드할때 직접 넣어줘야하고 팀과 파일을 공유할때 어떻게 공유할지 문제가 발생한다. 2. Git Secrets 이용 [해당 방법은 git action을 이용한 ci/cd에서도 사용되는 방법이다.] application.*이라던지 중요정보가 적힌 파일 자체 또는 중요한 키값을 .. Spring/Spring 2023. 1. 20. Spring Boot]로그,로깅,로그를 파일로 저장하기 (LogBack) [미완] [틀린 정보가 있을 수 있습니다.] 로그와 로깅에 대한 정보 8)★★★스프링 MVC - 기본기능, 로깅(logging) 초기설정 스프링부트 application 실행해서 동작 테스트 로깅(logging) 간단히 알아보기 스프링부트를 생성하면 자동으로 추가되는 스프링부트스타터 안에 스프링부트 스타터 로깅이라는 라이브러 keeeeeepgoing.tistory.com LogBack(로그백) 정리 [위에 링크된 게시글에서 정리한 내용은 제외] LogBack은 SLF4J를 인터페이스로 사용한다 ( SLF4J의 편하게 구현체라고 생각하면 될듯하다) Appender,Encoder,Layout LogBack은 로그를 찍는 일에 대해 Appender라는 Components에 위임한다. 그러나 실제 로그의 formatti.. Spring/Spring 2023. 1. 19. 8)스프링 MVC - 기본기능, 로깅(logging) 초기설정 스프링부트 application 실행해서 동작 테스트 로깅(logging) 간단히 알아보기 스프링부트를 생성하면 자동으로 추가되는 스프링부트스타터 안에 스프링부트 스타터 로깅이라는 라이브러리가 있고 그 안에 SLF4J와 Logback있는걸 확인할 수 있었다. slf4j가 다른 로그 라이브러리를 통합해서 만든 인터페이스 역할을 하는 라이브러리이다. LogTestController //@Controller 어노테이션을 사용하고, Mapping 메소드에서 String을 반환하면 뷰 이름으로 인식한다.( 받은 문자를 논리 뷰 이름으로 인식하여 뷰 리졸버를 이용하여 뷰를 생성하려고할것이다) @RestController// @RestController를 사용했을때 String을 반환하면, 그냥 String.. 인프런/스프링 MVC 1편 2023. 1. 19. git] subtree 만들기 , 오류 해결(fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.) [틀린내용이 있을 수 있습니다.] 1. 부모 리포지토리를 생성해준다. 부모 리포지토리안에 자식 리포지토리를 저장해서 폴더형식으로 구성할것이다. study-inflearn-springMVC1이 부모 리포지토리이다. 2. 자식 리포지토리 생성해준다. 부모 리포지토리에 들어갈 자식 리포지토리를 생성한다. study-inflearn-springMVC1-project1이 자식 리포지토리 study-inflearn-springMVC1-project2 또한 자식 리포지토리이다. 3. 부모리포지토리를 생성했을시 아무파일도 없는 상태일것이다. 3-1. 부모 리포지토리를 clone한다. GitBash 프로그램을 키고, clone된 리포지토리가 저장되길 바라는 위치로 이동후 git clone 부모리포지토리깃주소 를 해준다... git 2023. 1. 19. 7)스프링 MVC 시작하기(버전1 ~ 버전3) ,Http api와 Rest api의 차이 직접 MVC프레임워크를 만들면서 컨트롤러를 만들었는데 그 컨트롤러들을 @RequestMapping 기반의 Spring MVC 컨트롤러로 바꿔보자. 어노테이션기반 스프링 컨트롤러도 버전업을 하면서 개선되어가는 모습을 살펴본다. SpringMemberFormControllerV1 (버전1 , 멤버등록 컨트롤러) @Controller public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); //프론트컨트롤러인 DispatchServlet이 이 값을 반환받아 뷰리졸버를 찾아 뷰를 .. 인프런/스프링 MVC 1편 2023. 1. 18. 6)스프링 MVC (구조이해),핸들러 매핑과 핸들러 어댑터,뷰 리졸버 Spring MVC (구조 이해) 이전 시간에 직접만든 MVC 프레임워크랑 실제 스프링 MVC를 비교해보자. Spring MVC 구조 FrontController -> Dispatcher Servlet 직접 MVC 프레임워크를 만들때 프론트 컨트롤러는 서블릿으로 만들었다. 서블릿의 urlPatterns(어떤 url을 받을것인지)로 * 기호를 이용하여 원하는 http요청들을 다 받아냈고, 요청에 대해 핸들러를 조회해서 찾아오고, 핸들러 처리할 어댑터도 조회해오고 하면서 진행했다. Spring MVC에서는 Dispatcher Servlet으로 이름만 다르고 하는일은 동일하다. (사전적의미 Dispatch -> 보내다(파견보내다) ,Dispatcher 보내고,배치하는것을 관리하는사람 즉 Dispatcher S.. 인프런/스프링 MVC 1편 2023. 1. 18. 5)MVC 프레임워크 만들어보기(리팩토링하면서 버전업 v1~v5) MVC 프레임워크를 단계적으로 업그레이드 시켜보면서 만들어볼것이다. 결국 끝까지 업그레이드를 하게 되면 Spring MVC와 유사한 구조가 될것이다. 직접 MVC프레임워크를 만들어보고, 업그레이드해보면 나중에 Spring MVC를 배울때 좀더 쉽게 이해할수 있을것이다. 프론트 컨트롤러 소개 이전 강의때 서블릿을 이용해서 컨트롤러를 만들었다. 그때는 http 요청마다 컨트롤러를 만들어줘야했고, 그래서 공통적으로 들어가는 코드가 반복되었다. 프론트컨트롤러를 도입하면 프론트컨트롤러에 공동로직을 몰아두고 프론트컨트롤러를 통해 나머지 컨트롤러로 이동하게끔한다. (프론트 컨트롤러만 서블릿이다.(요청을 받아야하니까), 나머지 컨트롤러는 서블릿을 사용하지않아도 된다.( 요청을 받을 필요가없으니까)) 프론트 컨트롤러 도.. 인프런/스프링 MVC 1편 2023. 1. 17. 4)서블릿,JSP,MVC패턴 적용 서블릿으로 간단한 회원관리 웹어플리케이션을 만들것이다. 그다음은 JSP, 그다음은 MVC패턴으로 만들어볼것이다. 어떤 불편한점이 있어서 MVC패턴이 탄생했는지 알아보고 MVC패턴에 대해 공부해보자. 회원이라는 엔티티 == 도메인모델을 만들어준다. Member.java @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { // 아무것도 받지않는 기본생성자도 만들어준다. } public Member(String username, int age) {//생성자로 이름과 나이를 받는 생성자를 만들어준다 this.username = username; this.age.. 인프런/스프링 MVC 1편 2023. 1. 16. 이전 1 ··· 11 12 13 14 15 16 17 ··· 27 다음