[spring] 컴포넌트 스캔을 이용한 빈 등록
by mini_min[spring] 컴포넌트 스캔을 이용한 빈 등록
✔️ 컴포넌트 스캔으로 빈 등록
: 특정 패키지에 위치한 클래스를 스프링 빈으로 자동 등록해주는 설정방식이다.
@Component, @Controller, @RestController, @Service, @Repository 등의 애노테이션을 기본적으로 스캔하는 빈을 등록한다.
@Autowired, @Required, @Resource, @Inject 같은 애노테이션들도 활성화된다.
<!-- @Component, @Service, @Controller, @Repository 등 스테레오 타입 애노테이션 활성화 시키기 -->
<!-- Service : 일을 하는 애한테 붙이는 것 -->
<!-- Controller : 나중에 MVC 에서 사용한다. -->
<!-- Repository : DB 작업하는 애들한테 사용한다. -->
<context:component-scan base-package="com.anno.user6"/>
✔️ @Component : 자동으로 빈을 등록(객체 생성)
: 자동으로 빈을 등록(객체 생성)
빈의 이름은 클래스명의 첫글자를 소문자로 하는 클래스명이다.
동일한 빈 이름이 2개 이상이 있으면 에러가 발생한다. (절대 xxx 이름중복xxx)
@Component
public class UserServiceImpl implements UserService {
private String name;
private String tel;
private int age;
public UserServiceImpl() {
this.name = "김자바";
this.tel = "010-1111-2222";
this.age = 20;
}
@Override
public String message() {
String s = name + " : " + tel + " : " + age +
(age >= 19 ? " , 성인 " : " , 미자 ");
return s;
}
}
✨ 빈의 이름을 부여하여 빈 등록도 가능하다.
// 빈의 이름을 부여하여 빈 등록도 가능하다.
@Component("user6.userServiceImpl2")
public class UserServiceImpl2 implements UserService {
private String name;
private String tel;
private int age;
public UserServiceImpl2() {
this.name = "다자바";
this.tel = "010-3456-3456";
this.age = 22;
}
@Override
public String message() {
String s = name + ", " + tel + ", " + age +
(age >= 19 ? " , 성인 " : " , 미자 ");
return s;
}
}
✨ @Resource : JAVA것, JDK9부터는 기본으로 제공안함
✨ @PostConstruct : JAVA것, JDK9부터는 기본으로 제공안함
✨ @PreDestroy : JAVA것, JDK9부터는 기본으로 제공안함
🔥 @Component("user7.userService") : 패키지 명이랑 클래스명으로 이름 주기
@Component
public class User {
//@Autowired
//JAVA것, JDK9부터는 기본으로 제공안함
@Resource(name = "user7.userService")
private UserService userServiceImpl;
public User() {
System.out.println("생성자..");
}
@PostConstruct //JAVA것, JDK9부터는 기본으로 제공안함
public void init() {
System.out.println("생성자 호출 후 바로 다음에 호출.. 초기화");
}
public void write() {
System.out.println("-- @Resource, @PostConstruct, @PreDestroy -- ");
System.out.println(userServiceImpl.message());
}
@PreDestroy //JAVA것, JDK9부터는 기본으로 제공안함
public void destroy() {
System.out.println("객체 소멸전 호출...");
}
}
//패키지 명이랑 클래스명으로 이름 주기
@Component("user7.userService")
public class UserServiceImpl implements UserService {
private String name;
private String tel;
private int age;
public UserServiceImpl() {
this.name = "김자바";
this.tel = "010-1111-2222";
this.age = 20;
}
@Override
public String message() {
String s = name + " : " + tel + " : " + age +
(age >= 19 ? " , 성인 " : " , 미자 ");
return s;
}
}
'Spring' 카테고리의 다른 글
[spring] AOP 란? (0) | 2022.11.09 |
---|---|
[spring] 자바 기반 Bean 설정 Configuration (0) | 2022.11.09 |
[spring] Annotation 기반 Bean 설정 (0) | 2022.11.09 |
[spring] bean Scopes 빈 객체 범위 정의 (0) | 2022.11.09 |
[spring] 의존성 주입 - 생성자, setter, 프로퍼티 파일 (0) | 2022.11.09 |
블로그의 정보
개발자 미니민의 개발로그
mini_min