본문 바로가기
Spring Boot

private final vs autowired 차이점

by 코딩diary 2025. 2. 14.

private final

한 번 값이 설정되면 바꿀 수 없다.

목적 : 객체가 생성될 때 초기값이 정해지고 이후 변경되지 않도록 보장.

public class UserService {
    private final UserRepository userRepository
    
    public UserService(UserRepository userRepository) {	// 생성자를 통해 값 설정
    	this.userRepository = userRepository;
    }
}

private final 덕분에 userRepository는 처음 할당된 이후 변경할 수 없음.

 

 

@Autowired

Spring이 자동으로 객체(빈, bean)를 넣어주는 기능.

목적 : 직접 객체를 만들지 않고, Spring이 관리하는 객체(빈)를 자동으로 주입받음.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;	// Spring이 자동으로 넣어줌
}

@Autowired를 붙이면 Spring이 userRepository를 알아서 주입해줌.

 

 

private final + @Autowired

 

@Service
public class UserService {
    private final UserRepository userRepository;
    
    @Autowired	// 생략 가능 (Spring이 자동 감지)
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

private final이 userRepository 값이 변경되지 않도록 보장.

@Autowired가 Spring이 UserRepository를 찾아서 넣어줌.