Bean 을 말한다.
@Data //lombok getter/setter/toString 외 추가
public class User {
private String name;
private int age;
}
Spring Container 를 구성하는 중요한 부분이다.
Bean 생명주기를 관리해준다.
의존성 주입을 해준다.
싱글톤 패턴으로 관리한다.
재사용 가능한 모듈성, 독립성을 가진 시스템 구성 단위를 말한다.
Spring 에는 @Component Annotation 이 있으며, 클래스를 Spring Bean 으로 등록할 때 사용한다.
Spring 에 의해 생성, 관리되는 클래스로 명시하고 싶을 때 해당 주석을 사용한다.
Spring container 가 여러 객체를 연결해주는 것을 말한다.
public class UserServiceImpl implements UserService {
//Field
@Autowired
private UserRepository userRepository;
}
의존성 주입이라고 용어가 참 어렵다.
내가 이해한 DI 란 A class 에서 B class 를 필요에 의해 사용하고 싶은데,
직접적인 new Constructor() 하면 coupling 이 심해져서 유지관리가 힘드니까
이런 행위들을 Spring 에 '외주' 맡기는 것으로 일단 생각하려 한다.
// JPA 적용
@Service("userService")
public class UserServiceImpl implements UserService {
//Field
private final UserRepository userRepository;
//Constructor
@Autowired
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
System.out.println(this.getClass());
}
//Method
public void addUpdateUser(User user) throws Exception {
userRepository.save(user);
}