[Java, Spring] @ControllerAdvice, @RestControllerAdvice란 ?
프로그래밍/Java2024. 9. 1. 22:41[Java, Spring] @ControllerAdvice, @RestControllerAdvice란 ?

요즘 이것 저것 하느냐고 손이 부족해서 오랜만에 포스팅을 쓰네요 !! 분발하자 !!!! (살려주세요...)@ControllerAdvice와 @RestControllerAdvice 우선 순위에 대해 알아보다 Advice에 대해 같이 정리하면 좋을 것 같아 같이 정리해보려고 합니다🫠 ❓@ControllerAdvice란 ?@ControllerAdvice는 Spring 3.2에서 도입된 어노테이션이고, 모든 @Cotroller 클래스가 공유하는 공통 로직을 정의할 때 사용합니다.주로 예외 처리와 바인딩 설정, 모델 객체 등에 사용됩니다. 아래 예제 코드를 통해 간단히 알아보겠습니다 ! 예제코드NotFoundException이 발생할 경우 error라는 이름의 뷰로 이동하고 메세지를 출력합니다.반환되는 타입을 ..

[Java, Spring] application.properties란 ?
프로그래밍/Java2024. 7. 29. 13:28[Java, Spring] application.properties란 ?

application.properties란 ?application.properties 파일은 런타임 시 다양한환경에서 동작할 수 있도록 필요한 옵션들을 제공하는데 사용됩니다.예를 들자면 메일 서버를 구축하거나 DB 종류별 설정, 로그사용 여부 등의 설정이 가능합니다. 직접 커스텀 옵션 값을 추가할 수도 있고, Spring에서 사용하는 디폴트 옵션들을 바꿀 수 있습니다.Spring Document를 통해 application.properties에서 사용한 디폴트 옵션들을 직접 확인하실 수 있습니다 !  application.properties을 사용하는 이유환경 분리application.properties을 사용하는 이유에는 다양한 이유가 있겠지만 가장 큰 이유 중 하나는 애플리케이션을 배포할 때 개발 단..

[Java, 자바] @JsonProperty, @JsonNaming이란?
프로그래밍/Java2024. 6. 20. 19:41[Java, 자바] @JsonProperty, @JsonNaming이란?

API 통신을 하다 보면 대부분 JSON 형태로 데이터를 주고 받습니다. 이때, 서로 파라미터 작성 방식(카멜케이스, 스네이크케이스) 또는 파라미터명이 다를 경우 데이터를 파싱하는 도중에 에러 또는 원활하게 파싱이 되지 않는 경우가 있습니다 ! 카멜 케이스, 스네이크 케이스란?카멜케이스(Camel Case)첫 글자는 소문자로, 중간 글자들은 대문자로 시작하는 표기법입니다.ex) memberId, memberName, memberPhoneNumber 스네이크 케이스(Snake Case)첫 글자는 소문자로, 중간 글자들은 언더바(_)가 포함되는 표기법ex) member_id, member_name, member_phone, member_phone_number일반 코드 예시간단하게 Json 형태로 Reques..

[Spring, Spring Boot] @Value가 null일 때의 원인과 해결 방법
프로그래밍/Java2024. 6. 17. 19:44[Spring, Spring Boot] @Value가 null일 때의 원인과 해결 방법

@Value란 ?먼저 @Value 어노테이션의 경우 DB접속 정보나 비밀번호, secretKey와 같이 민감한 정보를 별도의 파일로 분리해서 환경 정보에 맞는 값을 불러오도록 하는 어노테이션입니다. application.properties 또는 application.yml에 값을 설정하면 필드나 메서드에 값을 주입해줄 수 있습니다 ! null을 반환할 때의 원인@Value 어노테이션이 property의 값을 받아오지 못하는 경우는 크게 네 가지가 있습니다 ! properties 이름을 잘못 입력했을 경우@Valse("${aws.secret-kee}")상단의 코드와 같이 properties에 등록한 이름과 다를 경우 null값을 반환합니다. Bean으로 등록되지 않은 경우클래스를 Bean(@Componen..

[StringBoot] Azure 번역기 API 사용하기
프로그래밍/Java2024. 6. 12. 21:17[StringBoot] Azure 번역기 API 사용하기

번역기 API를 사용하기 위해 Papago open API를 사용하려고 했으나.... 서비스 지원이 종료됬다고 하네요.....우우우우우~그래서 ! Azure를 통한 번역기 API를 사용해보았습니다 !Azure 가입 및 구독API를 사용하려면 Azure에 가입한 후 구독을 진행해줘야합니다 !  12개월은 무료로 사용할 수 있다고합니다 ! 클라우드 컴퓨팅 서비스 | Microsoft AzureMicrosoft Azure의 유연한 개방형 클라우드 컴퓨팅 플랫폼을 통해 목적에 따라 투자하고 비용을 절감하며 조직을 더 효율적으로 만드세요.azure.microsoft.com위 링크를 통해서 회원가입을 진행한 뒤 메인 페이지 배너에 있는 Azure 무료 체험하기를 클릭하면 해당 서비스를 이용하실 수 있습니다 ! 번역..

[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
프로그래밍/Java2024. 5. 27. 21:49[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)

어느날 문득 정리하고 데이터 받는 방법에 대해 정리하고 싶어졌다 !서버에서는 요청한 데이터를 전달 받는 방법은 다양하다 ! MVC 패턴에서 주로 사용하는 어노테이션을 위주로 정리해 보려합니다 ! @RequestBody@RequestBody는 클라이언트가 보내는 HTTP 요청 본문(JSON, XML 등)을 HttpMessageConverter를 통해 타입에 맞는 자바 객체로 변환해줍니다 !@PostMapping("/test")@ResponseBody // return datapublic String test(@ReqeustBody data) { ...} @RequestParam@RequestParam은 클라이언트가 요청할 때 쿼리스트링을 통해 넘어오는 매개변수를 추출할 수 있습니다 !required가 t..

[Spring, Spring Boot] @Transactional의 중첩에 대하여
프로그래밍/Java2024. 4. 12. 19:00[Spring, Spring Boot] @Transactional의 중첩에 대하여

트랜잭션의 개념은 여기를 클릭하여 확인해보세요 ! @Transactional이  중첩이 되었을 때업무 중 @Transactional이 중첩이 되었을 때(아래와 같은 상황) 어떻게 진행될지 궁금해졌다 !@Transactionalpublic Info buy(String item){ payment newPayment = new payment(item); return payment(newPayment)}@Transactionalpublic Info payment(Info info){ buyRepository.save(info); return info;}buy 메서드에서 payment 메서드를 호출하고 있는데, 두 메서드 모두 @Transactional 어노테이션이 적용되어 있는 상태입니다. 트랙잭션의..

[Spring, Spring Boot] @Configuration이란 ?
프로그래밍/Java2024. 4. 12. 18:30[Spring, Spring Boot] @Configuration이란 ?

@Configuration이란 ?Spring, Spring Boot에서 Bean을 수동으로 등록하기 위해서는, class 상단에 @Configuration 어노테이션을 적용해주고, @Bean을 사용해 수동으로 빈을 등록할 수 있습니다 !빈을 생성할 때 메서드의 이름으로 빈의 이름이 결정됩니다. 그러므로 중복된 빈의 이름이 존재하지 않도록 주의해줘야합니다 !@Configurationpublic class DatabaseConfig { @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); ..

image