Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[Spring] 컨트롤러 Bean 객체 자동 및 수동 생성 정리 본문

Spring/Spring: 정리

[Spring] 컨트롤러 Bean 객체 자동 및 수동 생성 정리

데브마우스 2024. 1. 17. 17:48

servlet-context.xml에서 <context:component-scan> 태그에 패키지 이름을 등록하면 해당되는 패키지들에 @Controller 컴포넌트가 작성되어 있다면 자동으로 Bean 객체를 생성합니다. 반대로 자동으로 Bean 객체를 생성한다면 수동 생성도 가능합니다.

 

Bean 객체 자동 생성 코드 형식

<!-- servlet-context.xml -->
<!-- 컴포넌트를 자동으로 인식합니다. -->
<context:component-scan base-package="com.springmvc.* />

 

컨트롤러의 Bean 객체를 등록하지 않고 수동으로 생성하는 방법도 있습니다.

방법은 아래와 같습니다.

<!-- servlet-context.xml -->
<!-- Bean 객체 수동 생성 -->

<!-- 객체 생성 코드 -->
<beans:bean class="com.practice.controller.WelcomeController"/>
<beans:bean id="memberRepositoryImpl" class="com.practice.controller.repository.MemberRepositoryImpl"/>

<!-- Injection(주입) -->
<beans:bean id="MemberServiceImpl" class="com.practice.controller.MemberServiceImpl"?
	<beans:property name="memberRepositoryImpl" ref="memberRepositoryImpl"/>
</beans:bean>

<beans:bean class="com.practice.controller.MemberController"/>
	<beans:property name="memberService" ref="memberServiceImpl" />
</beams:bean>

주의 하실점으론 자바 파일에서 컨트롤러와 의존 관계에  클래스의 프로퍼티에 선언된 @Autowired를 인식할 수 없습니다. 그렇기 때문에 프로퍼티의 Setter() 메서드를 모두 작성하셔야 하니다.

// MemberController.java
private MemberService memberService;

public void setMemberService(MemberService memberService) {
	this.memberSerivce = meerService;
}

 

// MemberService.java
private MemberRepository memberRepository;

public void setMemberRepository(MemberRepository memberRepository) {
	this.memberRepository = memberRepository;
}