스프링 프레임워크에서는 컨트롤러(Controller)에서 뷰(View)로 데이터를 전달하는 여러 가지 방법이 있다.그 예로는 Model, ModelMap, ModelAndView가 있다.개념과 차이점을 알아보자. 1. 개념1) ModelModel이란?👉 뷰를 렌더링하는 데 사용되는 속성을 제공할 수 있는 가장 기본적인 개념(스프링 MVC에서 컨트롤러와 뷰 사이의 데이터를 전달하는 역할을 하는 인터페이스)뷰에 데이터를 제공하려면?👉 controller에서 데이터를 Model 객체에 추가하면, 이 Model 객체는 뷰로 전달되어서 뷰에서 사용될 수 있음Model에 데이터를 추가하는 방법👉 addAttribute() 메서드를 사용예) model.addAttribute("message", "Hello, ..
spring
1. 서블릿 Servlet- 등장 배경 웹이 1990년대 중반 급속도로 발전하면서 서버와 클라이언트 간 동적인 데이터 처리가 필요해졌다.이전에는 HTML로 정적 웹 페이지를 만들 수는 있었지만,사용자의 요청에 따라 실시간으로 변하는 페이지 생성 방법이 필요해졌다.따라서 서블릿이 등장하게 된다. - 특징자바로 작성된 서버 측 프로그램으로, 클라이언트의 요청을 받아 처리함동적인 웹 페이지 생성웹 서버와의 통신을 위해 HTTP 프로토콜 사용클라이언트의 요청 처리 후 응답 반환Java EE(Enterprise Edition)의 일부 - 문제점Java 코드만으로 HTML을 만들어야 하므로 매우 복잡하고 비효율적임👉 템플릿 엔진이 등장하게 됨 템플릿 엔진이란?HTML 문서에서 필요한 곳만 코드를 적용하여동적으로 ..
오류 내용팀 프로젝트 중 머지 후 풀을 받고 아래와 같은 오류를 맞닥뜨렸다.caused by: org.springframework.beans.factory.beancreationexception at abstractautowirecapablebeanfactory.java:1786 오류 이유팀원들이 타임리프가 잘 적용이 됐는지 확인하기 위해 컨트롤러에 코드를 작성해두었는데,찾아보니 서로 다른 메소드에서 동일한 Mapping 처리를 한 것이 원인이라고 한다.스프링은 매핑을 처리할 때 경로와 HTTP 메서드를 기반으로 매핑을 식별하는데,동일한 경로에 여러 개의 메서드가 매핑되면 충돌이 발생하게 된다.👉 매핑을 고유하게 만들어야 함 오류가 발생한 코드import org.springframework.ster..
1. MVC 패턴이란? - 정의애플리케이션을 개발할 때 사용하는 디자인 패턴애플리케이션의 개발 영역을 Model, View, Controller로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식 - 장점UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능함 - 구조Model 모델애플리케이션의 정보(데이터)를 나타냄웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 하는데,이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 모델이라고 함View 뷰텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소모델을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스를 제공스프링 MVC에 포함된 Vi..
1. 컴포넌트 스캔이란? 스프링이 스프링 Bean으로 등록될 준비가 된 클래스들을 스캔하여 Bean으로 등록해주는 과정 자바에서 스프링 빈을 등록하기 위해 @Bean을 사용해야 하지만, 하나하나 등록하는 게 번거로울 때 컴포넌트 스캔을 통해 스프링 빈을 등록함 @Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 됨 @Configuration, @Service, @Repository, @Controller 등의 어노테이션에도 전부 @Component가 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 됨 2. 탐색 방법 및 기본 스캔 대상 - 탐색 방법 1) servlet-context.xml 해당 태그를 사용해 패키지 이름을 지정하면, 애플리케이션 실행 시 해당 패키지에서 어노테..
기존에는 스프링 의존성 주입을 위해 xml 파일에 코드를 작성했었다. 궁금하다면 클릭 👇 2024.04.09 - [Web/Spring] - [Spring] 의존성 주입과 제어 역행 이번 글에서는 어노테이션을 이용하여 의존성을 자동으로 주입할 수 있는 방법을 알아보도록 하겠다. 바로 @Autowired 어노테이션을 이용하는 것이다. 1. @Autowired의 특징 기존 XML 파일에서 각각의 빈을 DI로 주입했던 기능을 코드에서 애너테이션으로 자동으로 수행함 @Autowired를 사용하면 별도의 setter나 생성자 없이 속성에 빈을 주입할 수 있음 👉 XML 파일에서 빈 설정 후 주입하는 방법에 비해 훨씬 간단함 2. @Autowired 이용 위치 - 필드를 통한 의존성 자동 주입 public class..
애플리케이션에서 사용자의 요구 사항에 따라 클래스 기능을 변경하거나 다른 클래스 기능으로 대체해야 하는 경우, 좀 더 수월하게 대체할 수 있게 도입된 기능이 바로 의존성 주입 DI과 제어 역행 IoC이다. 0. 의존성? 의존성 사용하는 객체를 A 클래스라고 하고 사용되는 객체를 B 클래스라고 할 때, A 클래스에서 B 클래스를 사용하려면 new 키워드를 이용해 B 클래스의 인스턴스를 생성하고 B 클래스의 메서드를 사용하게 된다. 이때 B 클래스에서 구현했던 메서드를 변경하면 그 영향으로 A 클래스에서도 해당 메서드를 변경해야 한다. 이런 관계를 'A 클래스는 B 클래스에 의존한다'라고 한다. 의존은 클래스 의존과 인터페이스 의존이 있다. 만약 둘 중 하나를 선택해야 한다면 인터페이스 의존을 사용하는 것이..
컨테이너가 뭔지 궁금하다면 하단 링크 클릭! 2024.03.29 - [Web] - [Web] 웹 서비스 구조 1. 스프링 컨테이너 Spring Container란? 자바 객체(빈, Bean)의 생명 주기(생성, 관리, 제거 등)를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링 컨테이너는 XML, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 부트 Spring Boot를 사용하기 이전에는 xml을 통해 직접적으로 설정해 주어야 했지만, 스프링 부트가 등장하면서 대부분 사용하지 않게 되었다. @Configuration 어노테이션이 붙은 클래스를 설정 정보로 사용한다. 클래스 내부에 @Bean 어노테이션이 적힌 메서드를 모두 호출하여 얻은 객체를 스프링 컨테이너에 등록하게 ..