본문 바로가기
728x90

spring boot14

[Heroku] SpringBoot 프로젝트 배포 💡 Heroku를 이용하여 SpringBoot 프로젝트 배포하기 1. Heroku 설정하기 heroku(https://dashboard.heroku.com/apps)에서 회원가입 후 app생성 2. GitActions를 이용해 Heroku 배포 시나리오 만들기 heroku에서 Profile → Account Settings → API Key 복사 github에서 Repository → Settings → Secrets → Actions → New repository secret 클릭하여 heroku API Key 사용하여 secrets등록 프로젝트에서 .github\workflows\ 경로로 deploy.yml 파일 생성 및 작성 name: Deploy on: push: branches: [ main ].. 2023. 9. 10.
[SpringBoot] MultipartFile 업로드/다운로드 하기 SpringBoot에서 MultipartFile 저장하고, 다운로드 받기 # File Upload Controller 1. controller에서 요청을 받을 때 MultipartHttpServletRequest 타입으로 request를 받아야 한다. 2. 파일과 같이 request body를 받아야 한다면 String타입으로 받은 후 Gson객체를 이용해 형변환 해야한다. 3. front에서 api요청 시 보낸 파일의 변수명으로 파일을 꺼내온다. > request.getFile("???") @RequestMapping(value = "/registerPrivacyResult", method = RequestMethod.POST) public BaseResult registerPrivacyResult(M.. 2023. 9. 5.
[SpringBoot] @Annotation 정리 @Autowired 스프링 DI(Dependency Injection)에서 사용되며, Bean 인스턴스가 생성된 이후 @Autowired를 설정한 메서드가 자동으로 호출되고, 인스턴스가 자동으로 주입됩니다. 필요한 의존 객체의 “타입"에 해당하는 Bean을 찾아 주입한다. 생성자 / setter / 필드 기본값이 true이기 때문에 의존성 주입을 할 대상을 찾지 못한다면 애플리케이션 구동 실패. 💡 Constructor Dependency Injection 생성자 주입은 생성자에 의존성 주입을 받고자 하는 field를 나열하는 방법으로, 권고되는 방법의 하나 이다. 장점 필수적으로 사용해야 하는 레퍼런스 없이는 인스턴스를 만들지 못하도록 강제함 Spring 4.3 이상부터는 생성자가 하나인 경우 @Aut.. 2023. 8. 20.
[SpringBoot] 주요 개념 정리 💡 Optional 'null일 수도 있는 객체'를 감싸는 일종의 Wrapper 클래스이다. • optional 변수 내부에는 null이 아닌 T 객체가 있을 수도 있고 null이 있을 수도 있다. 따라서, Optional 클래스는 여러 가지 API를 제공하여 null일 수도 있는 객체를 다룰 때 사용한다. // 1) Optional 객체 생성 Optional result = userRepository.findById(userId); // 2) Optional 객체 접근 if(result.isPresent()) { return result.get(); }else{ return result.orElse(null); // Optional객체에 담긴 값이 있으면 객체 내부의 값을 반환. // 만약, null인.. 2023. 8. 20.
[SpringBoot] NaverAPI - RestaurantProject Naver 지역 API정보 검색 > 지역 - Search API 내 애플리케이션 (Id, Secret) 애플리케이션 - NAVER Developers NaverAPI 연동하기! application.properties 파일을 yaml파일로 변경하여 사용 (가독성이 좋아 최근 많이 사용) naver: url: search: local: image: client: id: ?????????? 0){ // 지역 검색 결과가 있다면 실행 var localItem = searchLocalRes.getItems().stream().findFirst().get(); var imageQuery = localItem.getTitle().replaceAll("]*>",""); // 괄호 제거 정규식 var searchIma.. 2023. 8. 20.
[SpringBoot] 07. Server to Server 💡 Client Controller @RestController @RequestMapping("/api/client") public class ApiController { private final RestTemplateService restTemplateService; public ApiController(RestTemplateService restTemplateService) { this.restTemplateService = restTemplateService; } @GetMapping("/hello") public Req getHello(){ return restTemplateService.genericExchange(); } } 사용자가 localhost:9090/api/client/hello를 .. 2023. 8. 20.
[SpringBoot] 06. Spring 기능 활용 💡 Validation Validation 이란 null값에 의한 null pointr exception등과 같은 에러 발생을 방지하기 위해 값을 미리 검증하는 과정이다. if(account == null || pw == null) { return; } if(age == 0) { return; } Validation의 사용 이유 검증해야 할 값이 많은 경우 코드의 길이가 길어진다. 구현에 따라 달라질 수 있지만 Service Logic과의 분리가 필요하다. 흩어져 있는 경우 어디에서 검증을 하는지 알기 어려우며, 재사용의 한계가 있다. 구현에 따라 달라질 수 있지만, 검증 Logic이 변경 되는 경우 테스트 코드 등 참조하는 클래스에서 Logic이 변경되어야 하는 부분이 발생할 수 있다. implemen.. 2023. 8. 20.
[SpringBoot] 05. Spring 핵심 💡 Spring의 핵심 Spring의 첫 1.0 version은 2004년 3월 출시. 20년 동안 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리 차지 스프링 프레임워크의 20여가지 구성은 핵심 기능인 (DI, AOP, etc)를 제공. 스프링의 여러 모듈 중 (Boot, Cloud, Data, Batch, Security)가 자주 쓰임. ‘테스트의 용이성’, ‘느슨한 결합’에 중점을 두고 개발. 💡 IoC / DI IoC (Inversion Of Control) 제어 역전 Java객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다. 즉, 개발자에서 > 프레임워크로 객체 관리 권한(제어)이 넘어갔음으로 “제어의 역전”이라고 한다. DI (Dependenc.. 2023. 8. 20.
[SpringBoot] 04. Spring Boot 💡 실습 Tool Version Spring Boot의 장점 애플리케이션 개발에 필수 요소들만 모아두었다. 간단한 설정으로 개발 및 커스텀이 가능하다. 간단하고, 빠르게 애플리케이션 실행 및 배포가 가능하다. 대규모 프로젝트(운영환경)에 필요한 비 기능적 기능도 제공한다. 오랜 경험에서 나오는 안정적인 운영이 가능하다 Spring에서 불편한 XML등의 파일 설정이 없어졌다. 💡 REST API @RestController Rest API 설정 @RequestMapping 리소스를 설정 (method로 구분 가능) GET API @GetMapping Get Resource 설정 @RequestParam URL Query Param Parsing @PathVariable URL Path Variable Pa.. 2023. 8. 20.
728x90