스프링 빈, 자바 빈 이란?
자바 빈
- 자바 빈은 자바 객체를 만드는 규약입니다. 자바 빈은 다른 클래스에서 재사용 가능한 자바 객체를 만들기 위한 규약이며, 이를 만족하는 자바 객체를 "자바 빈"이라고 부릅니다.
- 자바 빈은 일반적으로 기본 생성자를 생성하고, 멤버 변수를 private로 선언하고, getter와 setter 메서드를 통해서만 접근 가능합니다
- DTO, VO와 비슷한 역할을 합니다.
예시
public class Person {
private String name;
private int age;
public Person() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
스프링 빈
- "빈"은 객체를 말합니다. 스프링 빈은 스프링 프레임워크에서 생성되고, 관리되는 객체를 의미합니다.
- 스프링 빈은 스프링 컨테이너에서 관리됩니다. 스프링 컨테이너는 스프링 빈을 생성하고, 필요에 따라 의존성 주입을 수행하고, 스코프에 따라 관리합니다. 또한, 스프링 빈은 싱글톤으로 생성되는 것이 기본적입니다.
- 스프링 빈은 싱글톤으로 생성되기 때문에, 여러 개의 인스턴스를 생성하지 않고, 한 번 생성한 빈을 재사용합니다..
- 스프링 빈을 사용하면 다른 클래스에서 빈을 쉽게 주입받아 사용할 수 있습니다. 스프링은 의존성 주입(Dependency Injection)을 통해 빈을 주입하며, 이를 통해 코드의 유연성과 확장성을 높일 수 있습니다.
스프링 빈 등록방법
- xml을 통한 빈 등록
- @Component 에노테이션을 통한 빈 등록
- @Controller, @Service, @Repository 에노테이션을 통한 빈 등록
- @Configuration, @Bean 에노테이션을 통한 빈 등록
xml을 통한 빈 등록
- applicationContext.xml 파일에서 myBean이라는 id를 가지는 MyBean 클래스의 인스턴스를 생성하고, name 속성을 "myBean"으로 설정합니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myBean" class="com.example.MyBean">
<property name="name" value="myBean"/>
</bean>
</beans>
JAVA 코드를 통한 빈 등록
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
MyBean bean = new MyBean();
bean.setName("myBean");
return bean;
}
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(String name, int age) {
User user = new User();
user.setName(name);
user.setAge(age);
return userRepository.save(user);
}
}