2024. 1. 10. 22:09ㆍ학부 강의/웹프로그래밍 (Spring)
0. 출처
아직 배우고 있는 중이라 부정확한 정보가 포함되어 있을 수 있습니다!
주의하세요!
올인원 스프링 프레임워크 참고.
1. 도서 대출 관련 기능 구현을 위한 준비
Package, class 추가.
//BookController.java
package com.office.library.book.user;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/book/user")
public class BookController {
}
//BookService.java
package com.office.library.book.user;
import org.springframework.stereotype.Service;
@Service
public class BookService {
}
//BookDao.java
package com.office.library.book.user;
import org.springframework.stereotype.Component;
@Component
public class BookDao {
}
하지만 이미 같은 이름의 클래스가 존재하므로 충돌이 발생한다.
2. 빈의 아이디를 다르게 설정
기존의 @Controller
를 @Controller("admin.BookController")
와 @Controller("user.BookController")
로 구분한다.
@Service
와 @Component
도 위와 같이 구분한다.
3. BeanNameGenerator 사용
빈의 아이디를 다르게 설정하는 것은 매우 귀찮다.
그래서 다른 방법으로 문제를 해결하고자 한다.
스프링에서 제공하는 BeanNameGenerator
인터페이스를 사용한다.
com.office.library.config
라는 새로운 패키지를 생성하고 LibraryBeanNameGenerator
라는 클래스를 생성하는데 이때 BeanNameGenerator
인터페이스를 구현한다.
//LibraryBeanNameGenerator.java
package com.office.library.config;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
public class LibraryBeanNameGenerator implements BeanNameGenerator {
@Override
public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
return definition.getBeanClassName();
}
}
LibraryBeanNameGenerator.java
는 generateBeanName()
이라는 메서드가 빈 아이디로 클래스 전체 이름을 반환하도록 하면 된다.
스프링 컨테이너가 LibraryBeanGenerator
를 사용하도록 servlet-context.xml
을 수정한다.
<!-- before
<context:component-scan base-package="com.office.library" />
-->
<context:component-scan base-package="com.office.library" name-generator= "com.office.library.config.LibraryBeanNameGenerator" />
name-generator= "com.office.library.config.LibraryBeanNameGenerator"
추가.
'학부 강의 > 웹프로그래밍 (Spring)' 카테고리의 다른 글
[Spring] Lombok (0) | 2024.01.04 |
---|---|
[Spring] 사용자 관련 기능 구현 (0) | 2024.01.04 |
[Spring] 도서 수정, 삭제 (0) | 2024.01.01 |
[Spring] 도서 등록, 검색 (0) | 2023.12.31 |
[Spring] Mail 보내기 (2) | 2023.12.21 |