Spring11 Spring) 등록된 Bean 확인하기 @SpringBootApplication public class AirbnbApplication implements CommandLineRunner { @Autowired private ApplicationContext ac; public static void main(String[] args) { SpringApplication.run(AirbnbApplication.class, args); } @Override public void run(String... args) throws Exception { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); Arrays.sort(beanDefinitionNames); for (String beanDef.. Spring/Spring 2023. 1. 31. Spring] 예외처리 (@ExceptionHandler , @ControllerAdvice,@RestControllerAdvice), 에러코드,실제 적용 [미완] @ExceptionHandler @ExceptionHandler는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. @ExceptionHandler라는 어노테이션을 쓰고 인자로 캐치하고 싶은 예외클래스를 등록해주면 끝난다. 모든 예외를 캐치하고싶다면 Exception.class로 @ExceptionHandler(NullPointerException.class) public Object myExceptionHandler() { log.info("핸들러가 실행되었습니다."); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); return "컨트롤러.. Spring/Spring 2023. 1. 24. Spring Profile마다 Application.* 다르게 사용하기 [미완] 현재 배포환경이 local인지 개발서버인 dev인지 프로덕션서버인 prod인지 등 서버의 배포환경에 따른 설정값들이 다를것이다 ( Spring Profile 마다 application.* 매핑하기 (파일이름으로 매핑) application.properties를 사용한다고 할때 application-local.properties application-dev.properties application-prod.properties 이런식으로 파일을 추가적으로 만든다고하면 Spring profile이 local일때는 application-local.properties를 가지고 서버 동작시키고 Spring profile이 dev일때는 application-dev.properties를 가지고 서버 동작시키고 Spri.. Spring/Spring 2023. 1. 20. 스프링환경설정파일(.properties,.yml),노출되면 안되는 정보 파일 관리, 빌드/배포 [미완] Spring boot 프로젝트를 github public repository에 올리게 되면 application.* 또는 노출되면 안되는 정보가 적힌 파일이 노출될 수 있다. 외부에 중요한 정보가 노출되지 않고 팀과 파일 공유 / 빌드,배포하는 방법을 알아보자 1. git ignore 중요한 파일들을 .gitignore 설정하여 깃허브 리포지토리에 올라가지않게 하는 방법이다. 하지만 application.* 등 빌드에 필요한 파일들은 빌드할때 직접 넣어줘야하고 팀과 파일을 공유할때 어떻게 공유할지 문제가 발생한다. 2. Git Secrets 이용 [해당 방법은 git action을 이용한 ci/cd에서도 사용되는 방법이다.] application.*이라던지 중요정보가 적힌 파일 자체 또는 중요한 키값을 .. Spring/Spring 2023. 1. 20. Spring Boot]로그,로깅,로그를 파일로 저장하기 (LogBack) [미완] [틀린 정보가 있을 수 있습니다.] 로그와 로깅에 대한 정보 8)★★★스프링 MVC - 기본기능, 로깅(logging) 초기설정 스프링부트 application 실행해서 동작 테스트 로깅(logging) 간단히 알아보기 스프링부트를 생성하면 자동으로 추가되는 스프링부트스타터 안에 스프링부트 스타터 로깅이라는 라이브러 keeeeeepgoing.tistory.com LogBack(로그백) 정리 [위에 링크된 게시글에서 정리한 내용은 제외] LogBack은 SLF4J를 인터페이스로 사용한다 ( SLF4J의 편하게 구현체라고 생각하면 될듯하다) Appender,Encoder,Layout LogBack은 로그를 찍는 일에 대해 Appender라는 Components에 위임한다. 그러나 실제 로그의 formatti.. Spring/Spring 2023. 1. 19. Github Actions + Code Deploy + Ngxin + ubuntu 20.04로 무중단 배포하기 (3) 마지막! 마지막 Nginx로 무중단 배포구현 자동 빌드/테스트 + 무중단배포의 전체 흐름중 마지막인 빨간 체크박스 부분을 구현할 시간이다. 스프링부트 프로젝트를 실행시 어느 포트를 사용할지 지정할 수 있다. 현재 프로젝트가 실행된 포트가 8081라고 하자. (현재 실행중) 개발자가 개발을 하던중 수정사항이 생겼고 커밋을해서 원격저장소에 올린후 workflow를 실행했다고 해보자(게시글에서는 수정으로 workflow를 실행하게끔 구현했으므로) workflow로 인해 빌드/테스트가 진행된후 s3에 빌드파일이 올라가고 code deploy agent가 배포를 할텐데 배포할때 8082 포트로 방금 배포된(=수정된,최신버전) 프로젝트를 실행하고 잘 켜졌는지 확인한후 잘켜졌다면 nginx가 8082포트의 프로젝트를 가르키게.. Spring/Spring ++ 2022. 10. 23. Github Actions + Code Deploy + Ngxin + ubuntu 20.04로 무중단 배포하기 (2) S3에 올린 jar를 가져다가 배포시키기 전 게시글은 빌드한 결과인 jar파일을 zip파일로 압축시켜 s3에 올리는 workflow를 구성했고 실제로 잘 동작한걸 확인할 수 있었다! Code deploy를 이용하여 배포시키기 Code deploy란 aws에서 제공하는 어플리케이션 자동 배포 서비스이다! EC2,AWS Lambda와 같은 서비스에 배포가 가능하고 현재위치 배포 또는 블루/그랜 배포 (= 무중단 배포)도 지원함 ( 하지만 나는 무중단배포에 nginx를 이용할것임) 이제 Code deploy에게 배포하라고 시켜보자 ( 그러면 Code deploy는 Code deploy agent에게 배포명령을 전달할것임) Code deploy의 배포과정 1. 개발한 어플리케이션(프로젝트) 최상단 경로에 App.. Spring/Spring ++ 2022. 10. 23. Github Actions + Code Deploy + Ngxin + ubuntu 20.04로 무중단 배포하기 (1) Jenkins , Travis ci 등 많은것들이 있지만 Travis Ci는 무료플랜이라고 해서 가입했더니 1달러를 뺏어가구 또 무슨 토큰을줘서 해당 토큰량을 사용할때까지만 무료라고해서 괘씸해서 Github Action으로 구현하였다. ci(Continuous Integration, 지속적 통합) 란? ci는 빌드/테스트 자동화과정을 의미한다. (테스트코드를 작성해놨으면 빌드시 테스트도 되니까?) 개발자가 일일이 빌드/테스트하는 그 일련의 과정을 jenkins라던지 travis ci라던지 github actions이라던지를 이용하여 구현한다. 그러면 개발자는 코드를 커밋할때마다 빌드와 테스트가 자동으로 이루어져 편리함을 제공함 + 커밋할때마다 빌드/테스트가 되서 공유 리포지토리에 통합되므로 여러명의 개발.. Spring/Spring ++ 2022. 10. 22. Spring - SMTP 네이버 이메일 인증 , redis로 인증번호 만료 구현 네이버 SMTP 설정 설정을 저장해주면 아래 Pop 서버명같이 작은 정보창이 생김 의존성 설정 //이메일인증 implementation 'org.springframework.boot:spring-boot-starter-mail' 환경설정 -> MailConfig.java OR application.yml 사용 @Configuration public class MailConfig { @Value("${spring.mail.password}") private String password; @Bean public JavaMailSender javaMailService() { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.. Spring/Spring ++ 2022. 10. 16. [swagger] 스웨거 미완성. swagger fox랑 swagger doc는 다르다. fox는 업데이트가 어느순간부터 되지않는다고 한다. fox, doc 원하는걸로 쓰자 아래는 doc로 적용법. Spring Docs + Swagger 설정하기 (Spring Rest Docs 비교) 고 평소 API 문서를 적용할때는 Spring Rest Docs를 많이 사용했는데 이번 기회에 Spring Docs + Swagger ui를 적용해서 둘의 장단점 비교를 해보고 싶어서 사용해봤다. Spring Docs. + Swagger 설정 예제 개발 환.. devbksheen.tistory.com SpringBoot SpringDoc(OpenAPI)을 이용한 Swagger 적용 SpringBoot로 백엔드 개발 시 API 도큐먼트를 위해 swa.. Spring/Spring 2022. 10. 9. 의존성주입(DI) 의존성? 의존성 주입을 이해하기전 의존성(=의존관계,Dependency)란? A가 B를 의존한다와 같이 의존대상 B가 변하면 그것이 A에 영향을 미치는 관계 , 그런 성질을 의미한다. 즉 하나의 클래스가 바뀔때 다른 클래스가 영향을 받는다는 것을 뜻한다. DI(Dependency Injection , 의존성 주입, 의존관계 주입) 의존성 중비이란 클래스간 의존성을 클래스 외부에서 주입하는것을 뜻한다. 더 자세하게는 의존성 주입은 클래스에 대한 의존성의 인터페이스화를 통한 코드 유연성 증대 + 클래스의 인스턴스를 외부에서 생성하여 주입하는것 을 뜻한다. 예) Computer 클래스가 CPUi5 클래스를 의존하고있었고 , 해당 cpui5 클래스 안에 메소드도 이용하고있었다. 하지만 어떠한 이유로 인해 com.. Spring/Spring 2022. 10. 3. 이전 1 다음