본문 바로가기

Spring9

[Spring] 스프링 @Controller, @ResponseBody, @RestController 애노테이션 🌸 @Controller - 스프링 컨테이너에 해당 클래스가 컨트롤러임을 알려준다. - 이 애노테이션이 붙은 클래스는 웹 요청을 처리하고, 해당 요청에 대한 응답을 생성하는 메소드를 포함한다. - 뷰를 반환하거나 리다이렉트하는 등의 작업을 처리할 수 있다. @Controller public class MyController { @RequestMapping("/hello") public String hello() { return "hello"; // 뷰 이름 반환 } } 🌸 @ResponseBody - 컨트롤러 메서드가 HTTP 응답 본문을 직접 반환할 때 사용한다. - 이 애노테이션을 포함하면 메서드가 반환하는 객체가 JSON이나 XML과 같은 형식으로 직접 응답 본문에 포함된다. @Controller .. 2023. 8. 16.
[Spring] HTTP 요청을 매핑하는 @RequestMapping 🌸 @RequestMapping - 스프링 프레임워크에서 사용되는 애노테이션 - 스프링 MVC 애플리케이션으로 들어오는 HTTP 요청을 컨트롤러 클래스의 메서드에 매핑하는데 사용된다. - 특정 URL 경로와 HTTP 메서드에 매핑되도록 설정할 수 있다. 🌸 @RequestMapping 사용법 ① 클래스 레벨에서 @Controller 애노테이션이 붙은 클래스를 만든다. 이 클래스는 스프링에 의해 컨트롤러로 인식된다. ② 컨트롤러 클래스 내의 메서드에 @RequestMapping 애노테이션을 적용하여 메서드를 특정 URL 경로와 HTTP 메서드에 매핑한다. ③ 요청에 대한 처리 결과를 반환하는 메서드를 작성한다. - 사용 예시 import org.springframework.stereotype.Control.. 2023. 8. 7.
[Spring] 스프링 컨테이너란, 스프링 빈 등록법 🌸 스프링 컨테이너 - 애플리케이션의 객체(빈)를 생성하고 관리한다. - 객체의 생명주기를 관리하며, 객체들 간의 의존성을 해결하고 필요한 객체를 제공한다. - IoC(Inversion of Control) 컨테이너라고도 알려진다. ❓ IoC(제어의 역전)란? 객체의 생성과 관리를 개발자가 직접하지 않고 컨테이너에 위임하는 것을 의미한다. 이를 통해 컴포넌트들 간의 결합도를 낮추고 유연성과 확장성을 향상시킨다. public class UserService { private UserDao userDao = new UserDao(); public void saveUser(User user) { userDao.save(user); } } //이 코드에서 UserService 클래스는 UserDao 클래스를 직.. 2023. 7. 4.
[Spring] 스프링 부트에서 caffeine 캐시 사용하기 최근 스프링 부트를 사용해서 Open API로 부터 데이터를 가져오고 파싱해서 반환하는 API 서비스를 만들고 있었다. Open API에서 제공하는 데이터는 매 한시간 마다 변경되는 데이터였다. 즉 1시간 내에 호출되는 요청은 불필요한 통신을 요구했다. 거기다가 Open API 속도가 매우 느려서 응답시간이 매우 길었다. 그래서 스프링 부트 프로젝트에 캐시를 적용해 보기로 했다. 캐시 프로바이더에는 Ehcache, Caffeine, Redis 등 여러개가 있는데, 난 찾아보다가 설정이 제일 간편해 보이는 Caffeine을 사용해보기로 했다. 🌸 스프링 부트 프로젝트에 Caffeine 캐시 사용해보기 ① build.bradle에 관련 의존성 추가하기 dependencies { // 다른 의존성들... im.. 2023. 6. 13.
[Spring] Spring boot 에서 application.yml 과 application.properties의 차이점 🌸 application.yml 과 application.properties - application.yml과 application.properties는 스프링 부트 프로젝트에서 사용되는 설정 파일 - 스프링 부트 애플리케이션의 설정 정보를 지정하기 위해 사용되는 것으로, 기능적으로 동일 - 그러나 파일 형식과 문법이 다르며, 특징과 사용방법이 다르다. 🌸 application.properties - application.properties는 표준 프로퍼티 파일 형식인 '.propertites' 파일 - key-value 쌍으로 구성되어 있다. - key=value 형식으로 작성된다. - 장점: 단순하고 직관적인 형식. 키-값 쌍이 명시적으로 드러나기 때문에 작성하기 쉽다. - 데이터베이스 연결 설정 예.. 2023. 5. 23.
[Spring] 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. - 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정(실제 네트워크 연결 X, 단순 문자 출력) - 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어야 하고, 애플리케이션이 종료되면 disConnect()를 호출해서 연결을 끊어야 한다. - 이를 테스트하기 위한 테스트코드 - networkClient라는 빈 생성 - 테스트 실행 결과 - 객체를 생성하는 단계에 url이 없기 때문에, null이 출력된다. 스프링 빈은 간단하게 객체 생성 →.. 2023. 1. 4.