울음참고 개발공부
final
Backend/Java 2025. 6. 5. 14:57

# 개념 private final JwtUtil jwtUtil;public MyService(JwtUtil jwtUtil) { this.jwtUtil = jwtUtil;} - 단 한 번만 할당 가능- 생성자에서 반드시 초기화해야 함- setter가 없어도 되고, 불변 객체로 설계 가능 한 번 정해진 값은 절때 바뀌지 않아야, 프로그램이 예측 가능하고 안전하게 돌아감 # 불변하지 않을 때 생기는 문제 1. 값이 어디에서 바뀌었는지 모른다public class UserService { private User user; public void updateName() { user.setName("철수"); } public void resetName() { u..

@RestController 의 역할 ( 생성자 주입 vs 필드 주입 )

@RestController 개념- final 필드나 @Nonnull 애노테이션이 붙은 필드만을 파라미터로 받는 생성자를 자동으로 생성해줌(기본생성자 생성 X) - Lombok 라이브러리에서 제공하는 애노테이션 중 Java 클래스에서 필수 필드를 초기화하는 생성자를 자동으로 생성해주는 기능 # 사용예시@RequiredArgsConstructorpublic class MemberService { private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; private String optionField;} 위 코드에서 @RequiredArgsConstructor 는 생성..

Spring Security - SimpleGrantedAuthority, UserDetails, UserDetailsService
Backend/Spring & Spring Boot 2025. 5. 29. 17:43

Spring Security: 인증(Authentication)과 권한(Authorization)을 처리하기 위한 강력한 프레임워크 스프링 시큐리티를 구현에 필요한 SimpleGrantedAuthority, UserDetails, UserDetailsService 에 대해 중점적으로 정리 SimpleGrantedAuthority - 사용자가 가진 권한(Role)을 문자열 형태로 표현하는 클래스 public final class SimpleGrantedAuthority implements GrantedAuthority - GrantedAuthority 인터페이스의 구현체- 문자열 기반의 권한( ex: "ROLE_USER", "ROLE_ADMIN")을 저장- 권한 체크 시 비교 기준이 됨 - 주로 U..

article thumbnail
Spring Security 의 초기 username 설정 위치
Backend/Spring & Spring Boot 2025. 4. 29. 15:36

Spring Security 를 사용할때, 아무런 세팅도 하지않은 초기 username은 "user" 이고 password 는 콘솔에 찍힌 password를 사용한다. 초기 username이 user 라는건 도대체 어디에 명시해두었을까 ?! Spring Security 관련 설정은 UserDetailsServiceAutoConfiguration 클래스에서 정의하고 있다. 다음은 해당 클래스의 코드 일부이다.@Bean@ConditionalOnMissingBean( type = "org.springframework.security.core.userdetails.UserDetailsService")public InMemoryUserDetailsManager inMemoryUserDetailsMan..

AOP 동작 방식

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..

Spring에서 @Autowired와 static 메서드 사용 시 NullPointException
Backend/Spring & Spring Boot 2025. 1. 22. 17:57

해당 글에서는 @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..

Java | 참조(Reference)
Backend/Java 2024. 9. 30. 10:35

참조의 의미와 자바의 GC(가비지컬렉터)가 어떻게 동작하는지 초보자의 시점에서 알아보자       참조(Reference)란?    어떤 객체를 가리키고 있다는 뜻 - 객체의 주소를 기억해서 그 객체에 접근할 수 있게 해주는 역할   예시 ) public class Example { public static void main(String[] args) { Person person = new Person(); // 'person'은 Person 객체를 참조하고 있음 person.setName("John"); Person anotherPerson = person; // 'anotherPerson'도 같은 Person 객체를 참조함 ..

article thumbnail
Java | 자바의 메모리 구조 - Stack 영역과 Heap 영역
Backend/Java 2024. 9. 25. 17:51

자바의 메모리 구조중에 Stack 영역과 Heap 영역에 대해서 알아보자    Stack 영역 각 메소드가 호출될 때마다 그 메소드 내에서 사용되는 지역 변수(로컬 변수)들이 저장됨메소드가 끝나면 그 메소드에 대한 스택 영역은 사라짐일시적인 데이터들(메소드 실행 중에만 유효한 데이터)을 저장하는 공간빠르게 접근 가능 public class Example { public static void main(String[] args) { int x = 10; // Stack에 저장되는 지역 변수 int y = 20; // Stack에 저장되는 지역 변수 int sum = add(x, y); // Stack에 메소드 호출 정보 저장 System.out.prin..