본문 바로가기
반응형

Spring/Spring MVC 524

생성자 vs setter vs field 의존성 주입 개요 DI를 하는 방법은 생성자 주입과 setter 주입이 있습니다. 2개를 코드로 비교하게 된 계기는, 스프링 공식문서에서 순화참조를 해결하기 위해서는 setter 주입을 사용하라고 했던 내용입니다. 생성자 주입이 훨씬 좋다고 평가되는데, 왜 setter 주입을 사용해서 해결하라고 했을까요? 실제 코드를 통해서 의존성 주입 방식에 따라 빈이 어떤순서로 생성되는지 비교해보겠습니다. 주입 방식에 따른 호출 순서 setter주입, 필드 주입, 생성자 주입에 따라서 매개변수가 있는 생성자, 매개변수가 없는 생성자, setter 함수 등이 어떤 순서로 실행된는지 알아보겠습니다. @Component로는 DogsDao, DogsService, DogsController 총 3개를 사용하겠습니다. setter 주입 .. 2022. 7. 15.
DispatcherServlet & ContextLoaderListener * 개요 서블릿을 먼저 공부하고, 스프링 구조를 공부하면서, DispatcherServlet이 중요한 역할을 한다는 것을 알게되었습니다. 이 서블릿 덕분에 클라이언트의 요청을 스프링이 처리할 수 있으므로 그 동작과정과 작동원리가 궁금했습니다. 또한 이와 관련하여 WebApplicationContext와 ContetLoaderListener도 함께 공부했습니다. Web Application에는 1개의 ServletContext가 있습니다. 여기에는 여러 자원들의 공유자원들이 있습니다. WebApplicationContext는 ServletContext 안에 만들어 집니다. ContextLoadListener는 Root WebApplicationContext에 여러 자바 빈들을 적재합니다. 주로 Servic.. 2022. 7. 12.
미니프로젝트 오늘의 공부 (@RequestParam), (@ModelAttribute) 매개변수 넘어왔을 때, request객체에 등록되는 것은 ModelAttribute뿐이다. @RequestParam의 변수를 jsp에서도 사용하고 싶으면 (Model model)을 주입받아 model.addAttribute를 사용하여 jsp에 넘긴다. form 커스텀에서 modelAttribute를 통해서 값들을 넘기지 않으면, request 객체에 담기지 않는다. ex)form 태그 안에 value에 ${}을 사용하면 파라미터에 넘어오지 않는다. form 커스텀에서 modelAttribute를 넘기기 위해서는 아무내용없는 Bean 객체를 (@RequestParam)에 보낸다. ex) 글쓰기를 한 내용을 파라미터로 넘기기 위해 f.. 2020. 5. 29.
Restful API 기본 웹 애플리케이션은 응답 결과를 브라우저가 사용하는 html, css,javascript 로 생성하여 전달한다. Restful API 서버는 응답결과를 "데이터만으로 구성"하여 클라이언트로 전달하는 서버이다. Restful API 서버는 웹, 모바일 PC 등 다양한 플랫폼으로 "데이터"를 전달할 때 사용한다. @RestController @Controller는 return하는 값이 jsp를 지정하는 의미이지만 @RestController에서 return은 "그 값자체를 브라우저에 전달"하는 방식이다. 객체나 리스트를 json 데이터로 만들어 주는 것이 Jackson Databind @RestController public class RestTestController { @GetMapping("/tes.. 2020. 5. 28.
MyBatis Java 언어를 사용하여 데이터베이스와 연동하는 프로그램을 만들 수 있는 기술이 JDBC JDBC 프로그래밍을 보다 쉽게 할 수 있도록 설계된 라이브러리가 MyBatis MyBatis는 Spring framework에서 이용할 수 있도록 라이브러리를 제공하고 있다. *JDBC(Java DataBase Connectivity) = 자바에서 데이터베이스에 연결하기 위한 인터페이스 *ODBC(Open Database Connectivity) = ODBC는 모든 응용 프로그램(프로그래밍 언어 무관)에서 모든 데이터베이스 시스템과 통신하는 데 사용할 수있는 개방형 인터페이스. 언어와 독립적이다. *DBCP(DataBase Connection Pool) = 데이터베이스와 커넥션을 맺고 있는 객체를 관리하는 역할. .. 2020. 5. 27.
예외처리 프로그램 실행 중 오류가 발생되면 프로그램이 중단되는데, 이 오류표시가 사용자 입장에서 보기 좋지 않다. 따라서, 오류 발생시 보여줄 jsp를 구성하고 이 jsp로 응답결과를 생성하여 브라우저로 전달한다. @ExceptionHandler는 Controller마다 만들면 불편하기 때문에 오류에 관련된 핸들러가 Controller에 없다면 Global Exception Handler를 만든다. 예외처리하는 방법은 다음과 같다. 1. Exception을 implements하고 @ControllerAdvice를 가진 GlobalExceptionHandler.java 생성하고 @ExceptionHandler로 예외처리 내용 정하기 2. 에러처리를 위한 jsp파일 생성 후 return 3. ServletAppCon.. 2020. 5. 27.
반응형