- Dependency Injection, 의존성 주입
- 객체간의 의존성을 외부에서 주입하여 관리한다는 특성
- 사실 Spring 단독적인 특징은 아니지만 Spring이 더 DI를 잘 도와주는거라 큰 특징 중 하나로 꼽히는 듯
public class App {
public static void main(String[] args) {
MyBean myBean = new MyBean();
myBean.callMethod();
}
}
- 기존 자바 프로그램에선 어떤 클래스를 필요로 할때 위와 같이 new로 선언하여 사용했으나
- 이는 수정 작업이 있을때마다 코드를 변경하는 비용이 많이 들게 되어 유지보수면에서는 좋은 방식이 아니란걸 알 수 있다
- 그래서 이런 클래스들 관리를 Spring에선 servlet-context.xml에 등록하여 관리를 한 뒤 사용하고 싶은 클래스에 그대로 사용하도록 세팅되어 있다
<beans:bean id="myBean" class="com.app.service.MyBean"/>
@Controller
public class App {
@Autowired
Mybean myBean;
@RequestMapping()
public String main() {
myBean.callMethod();
}
}
- 위와 같이 xml에 bean들을 설정하고, 소스단에서는 사용하고 싶은 객체를 Autowired 어노테이션만 달아 간편하게 사용할 수 있다
- 아니면 스프링 이후 버전에선 Service 어노테이션만 달아서 Bean 객체처럼 사용할 수 있으며
- xml이 아니어도 Configration 어노테이션 하에 Bean 어노테이션만 달아서 관리할 수도 있다
@Configuration
public class AppConfig {
@Bean
public MyBean getMyBean() {
return new MyBean();
}
}