Bean(빈) 등록을 어노테이션 @Configuration
을 통해서 할 수 있다.(자바 설정 등록)
물론 단순히 어노테이션만 붙인다고 되는 것은 아니다.
servlet-context.xml 파일에 경로를 추가해주어야 한다.
<context:component-scan base-package="com.app.config"></context:component-scan>
경로를 추가해주었다.
com.app.config
패키지를 생성하고 config 파일을 하나 생성해보았다.
↓ BeanConfiguration.java
@Configuration
public class BeanConfiguration {
//등록할 빈에 대한 리턴 형태의 메소드 작성
@Bean
public JavaConfigBean javaConfigBean() {
return new JavaConfigBean();
}
@Bean
public JavaConfigBean javaConfig1() {
return new JavaConfigBean();
}
}
↓ JavaConfigBean.java 클래스
public class JavaConfigBean {
public JavaConfigBean() {
System.out.println("JavaConfigBean 생성자 호출");
}
}
↓ 컨트롤러
@Controller
public class JavaBeanController {
@Autowired
ApplicationContext applicationContext;
@GetMapping("/javaBean")
public String javaBean() {
JavaConfigBean jb1 = (JavaConfigBean)applicationContext.getBean("javaConfigBean");
JavaConfigBean jb2 = (JavaConfigBean)applicationContext.getBean("javaConfig1");
System.out.println(jb1);
System.out.println(jb2);
return "checkBean";
}
}
↓ 출력결과
>>> Bean(빈)이 생성되고 출력됨
Bean에 이름 지정하기
@Bean(name = "myConfigBean") //getBean("myConfigBean")
public JavaConfigBean sampleConfig1() {
return new JavaConfigBean();
}
>>> name 속성에 값을 넣고 getBean을 통해 가져올 수 있다!
@Component 어노테이션을 사용하려면, @Configuration 어노테이션 사용과 마찬가지로 사용할 경로를 servlet-context.xml 파일에 추가해서 이 경로를 스캔할 것임을 지정해주어야 한다.
com.app.dao
패키지에 파일을 만들어 줄 것이므로 <context:component-scan base-package="com.app.dao"></context:component-scan>
경로 추가.
com.app.dao
경로 안에 SampleDao.java
클래스를 하나 만들어보았다.
@Component
public class SampleDao {
//SampleDao 클래스
}
>>> @Component 어노테이션을 붙여주고 컨트롤러에서 가져와보겠다.
↓ 컨트롤러
@Controller
public class CompController {
@Autowired
SampleDao sampleDao;
@RequestMapping("/comp1")
public String comp1() {
System.out.println("/comp1");
System.out.println(sampleDao);
return "checkBean";
}
}
↓ 출력결과
>>> 출력결과 sampleDao에 객체가 주입되어 불려온 것을 확인할 수 있음!