WEB/Spring
-
@Controller와 @RestController 차이WEB/Spring 2023. 7. 17. 08:10
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식입니다. 이번에는 2가지 어노테이션의 차이와 사용법에 대해 알아보도록 하겠습니다. 1. @Controller 이해하기 [ Controller로 View 반환하기 ] 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Clien..
-
Scheduler 란?WEB/Spring 2023. 3. 11. 19:01
Scheduler 스프링 스케쥴러는 일정 주기마다 특정 작업을 수행하기 위해서 사용된다. 개발자가 하나하나 신경쓰지 않더라도 Scheduler의 기능을 이용하면 원하는 기능을 수행할 수 있게된다. 실행주기를 설정하는 방법 fixedDelay : 이전 수행이 종료된 지점을 기준으로 일정시간이 경과했을 때 다음을 수행 fixedRate : 이전 수행이 시작된 지점을 기준으로 일정시간이 경과했을 때 다음을 수행 위의 두 가지 방법은 이전에 수행했던 수행시점을 기준으로 일정시간 후에 다음 수행을 시작한다. fixedRate의 경우 작업에 소요되는 수행 시간이 fixedRate에서 지정된 시간보다 길어지면 두 수행이 겹쳐서 발생할 가능성이 있기 때문에 fixedRate을 사용하여 스케쥴링을 할 때에는 주의가 필요..
-
XML을 이용한 쿼리 실행WEB/Spring 2023. 1. 6. 17:07
1. MyBatis + XML 연동 1. 테이블 생성 2. MemberVO 클래스 생성 (패키지 : my.spring.domain) 3. MemberDAO 인터페이스 생성 (패키지 : my.spring.dao) 4. MemberDAO.java 파일에 아래 코드 입력 1-1. XML Mapper 생성 (Mapper 폴더 경로 : /src/main/resources) 1. Mappers 폴더를 생성한다. 2. XML 파일 생성 (파일 경로 : /src/main/resources/mappers) 3. MemberMapper.xml 에 아래 쿼리 추가 4. root-context.xml 파일에 mapperLocations 추가 (mybatis-Spring에서 XML Mapper 인식) 1-2. DAO 인터페이스..
-
어노테이션을 이용한 객체 생성WEB/Spring 2022. 11. 25. 19:24
위 그림 처럼 B라는 객체가 B2라는 객체를 의존 하고 있을때를 가정 해보자. B2를 B3라는 객체로 결합 상태를 바꾸고 싶을때, 결합 상태를 바꾸기 위한 코드가 수정이 되어야 하는데 코드를 수정 하지 않고 변경 하기 위해 우리는 XML을 이용하였다. 하지만 XML을 이용 하여도 설정 파일에서 또 한번 동그라미 부분의 수정이 B2=>B3로 바꿔줘야하는 번거로움이 생긴다. 어노테이션을 이용하면 설정파일을 따로 둘 필요없이 객체를 바꿔버리면 설정도 자동으로 바뀌게 되어 편리한 장점이 있다. 지시서 작성 방식의 변경 XML파일 형식의 지시서 작성 방식 어노테이션을 이용한 방식 자료 출처 : https://www.youtube.com/@newlec1/featured 뉴렉처 "유료" 온라인 강의 사이트 뉴렉처에서..
-
DI와 IOC컨테이너(3)WEB/Spring 2022. 11. 25. 19:07
스프링에 가장 코어 해당되는 능력은 바로 부품을 조립해 주는 것(DI)인데 그러기 위해선 여러가지 부품들을 우리가 주문서에다 입력을 해서 스프링에게 제공을 해주어야함 스프링은 제공해주는 주문서를 토대로 부품을 생성하고 조립 해줌 xml 또는 어노테이션을 이용하여 주문서를 작성 할수 있다. 스프링은 주문서의 입력 되어 있는 내용대로 객체를 생성해서 담을 수 있는 그릇이 필요하다. 소프트웨어서 그런 그릇들을 컨테이너라고 하고 그 컨테이너에 담겨져 있는 것이 무엇이냐에 따라서 무슨 컨테이너라고 한다. 일단 우리가 주문서에다 어떤 부품을 생성 해주세요 라고 하면은 생성 해준다 그리고 컨테이너에 담게 된다. 이걸 우리가 ioc 컨테이너 라고 한다. 자료출처 : https://www.youtube.com/@newl..
-
DI와 IOC컨테이너(2) XML을 이용한DIWEB/Spring 2022. 11. 25. 18:48
우리가 어플리케이션을 만들다 보면 객체 하나 갖고 만들어 지는 경우는 없다. A 라는 객체는 B와 C의 객체를 이용 A객체는 B,C객체에 의존을 한다고 표현한다. 다른 객체를 이용 하는 방법에는 두가지가 있다. 내부적으로 New연산자를 이용해서 B,C를 생성 (직접 생성) 외부에서 B와 C를 만들어서 Setter 와 생성자를 통해 넣어줌 (외부에서 생성하여 넣어줌) 스프링은 2번 째 방법을 사용하고 있다. A객체 에서B C가 필요하다. 여기서 B와 C등 여러가지 A에 필요한 객체들을 부품화 시켰다고 할수 있고, 이러한 부품들을 모아 놓은 것을 IOC 컨테이너 라고 할 수 있다. 스프링이란 결국 부품을 생성하고 조합하는 라이브러리의 집합체라고 할수 있다. 스프링에서 주입 하는 방법 DI(외부에서 주입 하는..
-
DI와 IOC컨테이너(1)WEB/Spring 2022. 11. 25. 18:47
엔터프라이즈 어플리케이션 만든다고 하면 기본적으로 사용하는Layer 가 용자의 요구에 맞는 서비스를 담당하고 있는 서비스 Layer 그 데이터 소스를 접근하는 방법 이라든지 구현 기술을 숨기고 단순하게 서비스 레이어에서 순수하게 자바 라고 하는 것만 이용해서 데이터를 제공할 수 있도록 해주는 그런 데이터 엑세스 오브젝트 DAO 계층이 있다. 업무 프로그램 이라고 하는 것은 수정 이라는 것이 항상 뒤따르게 되어 있다. 예를 들어 이제 B1에 알고리즘이 달라졌다거나 서비스 에 대한 내용이 달라져서 기본적으로 여기 있는 내용을 재수정 해야 한다고 하면은 내가 갖고있는 서비스를 바꾸기 위해서는 두가지 방법이 있을 것이다. 1. B1의 소스코드를 구해서 그 소스 코드를 수정한다 2. 새로하나 만들어서 덮어쓰기 한..
-
스프링 생명 주기WEB/Spring 2022. 7. 17. 12:43
컨테이너 생명 주기 스프링 컨테이너의 생명주기는 간단하다. 2. 빈 생명주기 인터페이스를 통한 초기화 , 소멸 관리 어노테이션을 이용한 초기화 소멸 관리 우리는 객체에 초기화 시점과 소멸 시점에 처리할 로직이 있다면 위 두 방법을 선택해 해당 로직을 구현 할 수 있다. 스프링 빈 범위(Scope) 스프링 컨테이너가 생성되고,스프링 빈이 생성 될 때, 생성된 스프링 빈은 scope을 가지고 있다. 범위란 쉽게 생각해 해당 객체가 어디까지 영향을 미치는지 결정 하는 것 이다. 위 코드를 보게 되면 student1과 student2는 서로 다른 객체가 아닌 하나의 빈 객체의 주소를 이용 하고 있다. 처음 프린트 결과 생성된 Student1은 bean객체에 construct 를 통해 "홍길순 30"이 저장 후 ..