기존 xml
ApplicationContext context = new GenericXmlApplicationContext("classpath:ApplicationContext04.xml");
현재 java
new AnnotationConfigApplicationContext()
ConfigContext.java 파일이 xml 대체함.
이 파일에서 bean 만듦.
injection 방법은 Annotation!
사용하는 어노테이션은 ...
:해당 클래스가 [스프링의 설정]으로 사용됨을 지정 (xml을 대체 할 거야)
ex)
@Configuration public class configcontext {}
<bean id="user" class="DI.User">
xml 에서 위 코드과 같은 형태를 아래 코드처럼 함수(method) 의 형태로 설계
ex
@Configuration public class configcontext { @Bean public User user(){ return new User(); }
result
- 어노테이션과 [메서드 이름]을 이용해서 스프링 컨테이너가 사용할 빈 객체를 설정한다.
- 메서드가 리턴하는 객체를 bean객체로 사용하겠다.
class MemberRegisterService{
private MemberDao memberdao;
public MemberRegisterService(MemberDao memberdao){
//MemberRegisterService는 MemberDao에 의존합니다. 생성자로 주입받습니다.
this.memberdao = memberdao;
}
}
<bean id="memberdao" class="MemberDao" />
<bean id="memberRegSvc" class="MemberRegisterService">
<constructor-arg ref="memberdao">
</bean>
class MemberRegisterService{
private MemberDao memberdao;
@Autowired
public MemberRegisterService(MemberDao memberdao){
this.memberdao = memberdao;
}
}
<context:annotation-config />
<bean id="memberRegSvc" class="MemberRegisterService"></bean>
<bean id="memberdao" class="MemberDao" />
(java 코드 기반의 작업)
@Configuration
class Configcontext{
@bean
public MemberRegisterService memberRegSvc(){
return new MemberRegisterService(memberdao()); //함수를 통한 주입
}
@bean
public MemberDao memberdao(){
return new MemberDao();
}
}
옵션 :
<bean id="m" class="board"></bean>
=> 자바코드
@bean
public board m(){
return new board();
}
옵션_1
@bean(name="hello")
public board m(){
return new board();
}