포스팅 목적 !! - Fegin Clien 정리할 것 1.개념2.사용법 3.인터페이스로 구현된 이유 Feign Client 란 ? - Spring Cloud 에서 제공하는 HTTP 클라이언트- 다른 서버의 REST API 를 인터페이스만으로 쉽게 호출할 수 있는 도구 특징 + 사용 예시 Fegin Client 의 장점에 대해 다른 HTTP 클라이언트와 비교 ! 1. 인터페이스만 정의하면 사용 가능하다 # 예시 RestTemplate 를 사용하여 HTTP 요청 RestTemplate restTemplate = new RestTemplate();UsetDto user = restTemplate.getForObject( "http://api.example.com/users/1", UserDto..

에러 메시지 : java: variable customerService not initialized in the default constructor [ 상황 ] 아래 코드에서 에러 발생 @RestController@RequestMapping("/api")@RequiredArgsConstructor@Slf4jpublic class CustomerController { private final CustomerService customerService; //...생략 } 에러 메시지가 의미하는 바는 final 필드인 customerService 가 초기화되지 않았다는 것을 의미한다 . final 키워드는 무조건 한번 초기화되어야하기 때문인데 이는 생성자에서 값을 꼭 넣어줘야하고 한..
@RequiredArgsConstructor 개념- final 필드나 @Nonnull 애노테이션이 붙은 필드만을 파라미터로 받는 생성자를 자동으로 생성해줌(기본생성자 생성 X) - Lombok 라이브러리에서 제공하는 애노테이션 중 Java 클래스에서 필수 필드를 초기화하는 생성자를 자동으로 생성해주는 기능 # 사용예시@RequiredArgsConstructorpublic class MemberService { private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; private String optionField;} 위 코드에서 @RequiredArgsConstr..
Spring Security: 인증(Authentication)과 권한(Authorization)을 처리하기 위한 강력한 프레임워크 스프링 시큐리티를 구현에 필요한 SimpleGrantedAuthority, UserDetails, UserDetailsService 에 대해 중점적으로 정리 SimpleGrantedAuthority - 사용자가 가진 권한(Role)을 문자열 형태로 표현하는 클래스 public final class SimpleGrantedAuthority implements GrantedAuthority - GrantedAuthority 인터페이스의 구현체- 문자열 기반의 권한( ex: "ROLE_USER", "ROLE_ADMIN")을 저장- 권한 체크 시 비교 기준이 됨 - 주로 U..

Spring Security 를 사용할때, 아무런 세팅도 하지않은 초기 username은 "user" 이고 password 는 콘솔에 찍힌 password를 사용한다. 초기 username이 user 라는건 도대체 어디에 명시해두었을까 ?! Spring Security 관련 설정은 UserDetailsServiceAutoConfiguration 클래스에서 정의하고 있다. 다음은 해당 클래스의 코드 일부이다.@Bean@ConditionalOnMissingBean( type = "org.springframework.security.core.userdetails.UserDetailsService")public InMemoryUserDetailsManager inMemoryUserDetailsMan..
AOP(Aspect-Oriented Programming) 가 프록시 기반으로 동작하는 원리 - AOP 는 Spring의 프록시 기반 방식으로 동작하기 때문에 @Controller 이든 @RestController 이든 @Component 이든 Spring이 관리하는 Bean 이면 적용된다. @Controller vs @RestController 차이점- @Controller : 주로 View(HTML,JSP) 반환하는 MVC 컨트롤러- @RestController : JSON 데이터를 반화하는 REST API 컨트롤러(@ResponseBody 가 기본 적용) 동작 예시 ) [ AOP 적용 전 ]@Servicepublic class SampleService { public void doSomethi..
해당 글에서는 @Autowired로 주입된 빈을 static 메서드에서 사용하려고 할 때 NullPointerException 이 발생하는 원인과 해결방안에 대해 다루려고 한다. 문제 상황 static 메서드 exctractBrandName() 에서 @Autowired로 주입된 someDAO를 사용하여 실행하면 NullPointerException이 발생한다. @Slf4j@Service("dataService")public class DataService { @Autowired private someDAO someDAO; public static String extractBrandName(String input) throws Exception { List brandNam..
' 인프런 강의의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 을 듣다가 든 궁금점 ' -> " html 파일이 실행되는 루트 폴더가 다르네?" ( /resources/templates 가 공통인 줄 알았음 ) Spring Boot 에서 war 로 패키징하는 의 경우 scr/main/webapp 경로에 index.html 이 있으면 기본 루트가 된다. 내가 여기서 말하는 기본루트라는 것은 'http://localhost:8080' 과 같이 실행 한 경우에 해당 경로의 index.html 이 실행된다는 것이다. 보통 main/resources/templates 가 기본 루트가 된다고 알고 있었는데, 해당 경우는 jar 로 패키징한 경우 이고 war 파일의 경우에는 /webapp 폴더를 루트로 설정..