Controller를 작성을 하면 @RequestMapping(value="/xxx/yyy.do)와 같이 /xxx와 같은 부분이 반복적으로 나타난다. 반복적인 작업을 막기위해 class에 @RequestMapping(value="/xxx")을 적어준다.
그러면 모든 메소드의 요청에 /xxx가 자동으로 삽입된다.
Ajax(Asynchronous JavaScript and XML)은 웹 개발에서 사용되는 기술 중 하나로 웹 페이지에서 비동기적으로 데이터를 요청하고 데이터를 받아와서 페이지를 다시 로드하지 않고 동적으로 업데이트 할 수 있게 해주는 기술이다.
1. 비동기성(Asynchronous) : 웹 페이지는 페이지 전체를 다시 로드하지 않고도 데이터를 서버로부터 가져올 수 있다. 이러면 사용자 경험을 향상시키고 성능을 개선할 수 있다.
2. 서버 요청 및 응답 : ajax을 사용하면 웹페이지에서 서버로 바로 요청을 보내고 서버는 해당 요청에 대한 응답을 반환한다. 이릉 통해서버와 상호작용을 할 수 있다.
3. 데이터 포맷 : ajax 요청과 응답은 주로 XML 또는 JSON 형식을 사용한다. 최근에는 JSON이 더 일반적으로 사용되며 데이터를 더 쉽게 처리할 수 있다.
4. XMLHttpRequest 객체 : ajax 요청을 만들고 관리하는데 XMLHttpRequest 객체를 사용하낟. 이를 사용하여 서버로 요청을 보내고 응답을 받아온다.
5. DOM 조작 : ajax을 통해 받아온 데이터를 사용하여 동적으로 웹 페이지의 DOM을 조작하여 콘텐츠를 업데이트할 수 있다.
ajax은 웹 애플리케이션에서 실시간 업데이트, 사용자 경험 향상, 웹 애플리케이션의 성능 향상 등 다양한 시나리오에서 사용된다. 라이브러리와 프레임워크를 사용하여 ajax 요청을 더 쉽게 처리할 수 있다.
lombok에서 제공되는 어노테이션 중 하나로 주로 생성자를 자동으로 생성하는데 사용된다. 이 어노테이견은 클래스의 필드를 기반으로 생성자를 생성할 때 코드를 자동으로 생성해주어 개발자의 코드르 간소화 하게 해준다. getter, setter, equals, hashCode 등의 메소드를 자동으로 생성할 수 있게 한다.
DI의 방식에는 필드 주입, setter 주입, 생성자 주입의 3가지 방법이 있는데 이중에서 권하는 것은 생성자주입이다. 생성자를 따로 만들어서 주입을 하게되면 코드가 길어지고 복잡하게 된다. 이를 Annotation을 이용해서 간결하게 만들어 준다.
@Responsebody은 스프링 프레임워크에서 사용하는 annotation중 하나로 해당 메소드가 HTTP 응답 본문을 직접 생성하고 반환 할때 사용된다. 주오 웹 어플리케이션에서 RESTful 웹 서비스 또는 AJAX 요청을 처리하는데 사용된다.
@Responsebody을 사용하면 메소드의 반환값을 HTTP 응답 본문으로 직접 출력할 수 있다. JSON, XML 또는 기타 데이터 형식으로 정보를 반환하고 클라이언트가 이 정보를 수신하여 처리할 수 있다.
@RestController는 스프링 프레임워크에서 사용되는 Annotation 중 하나로 컨트롤 클래스에 적용된다. 해당 컨트롤러의 모든 메소드가 HTTP 응답으로 데이터를 직접 반환하도록 만든다. 메소드의 반환값이 HTTP 응답 본문으로 자동으로 시리얼라이즈 되어 클라이언트에세 전송된다.
@RestController는 @Controller 와 @ResponseBody 을 결합한 것과 같은 역활을 한다. @RestController를 사용하면 모든 메소드가 기본적으로 @ResponseBody 를 포함한 것으로 간주된다.
클라이언트에게 받은 요청을 수행할 조직을 제어하는 객체이다. 요청을 어떻게 처리할지 결정하는 객체이다.
로직이 있는 부분이다. Dao를 통해서 DB에서 데이터를 Dto 로 전달하여 받은 Dto 를 처리하여 서비스에 반환한다. service 부분에도 Dao 처럼 싱글톤 패턴이 있어야한다.
계층간 데이터 교환을 위해 사용되는 객체이다.
Dto 내부에는 로직이 존재하지 않으며 생성자와 Getter, Setter 만 존재해야한다. Dao가 데이터 베이스에서 얻어온 데이터를 service나 controller로 보낼 때 getter 와 setter을 통해 얻어 사용하는 객체이다.
데이터베이스에 접근하기위한 로직과 비지니스로직을 분리하기위해 사용되는 객체이다. 오직 데이터와 삭제, 수정등의 CRUD 를 작업하는 것이라고 생각하면 된다. 이는 다른 로직에서 데이터베이스를 통해 데이커를 얻어오려면 DB Driver와 Connection 객체를 생성하여 작업량이 많아진다. 비효율적인 작업량을 줄이기위해서 따로 만드는 것이다.
DB에 연결한 Entity를 사용하기 위한 인터페이스나 클래스가 있는 곳이다. 데이터베이스에 연결이 되었으면 값을 넣거나 조회를 하여야 쓸모가 있는데 이를 어떻게 할 것인지 정의해주는 곳이다.
빈을 저장하기위한 클래스를 저장하는 패키지이다. 빈 설정, 데이터베이스 연결 설정, 보안설정 등을 다루는 클래스들이 여기에 속한다.