스프링 컨테이너 구동 시 생성해야 하는 객체(Bean)들과 의존 관계를 Java 파일로 작성하는 방식
스프링 컨테이너가 자바 파일을 설정 파일로 식별하기 위해서는 @Configuration 어노테이션을 클래스에 작성해야 함
@Configuration
public class JavaConfig {
}
자바 파일에서 빈을 선언하기 위해서는 객체를 리턴하는 메소드를 만들고 @Bean 어노테이션을 메소드에 작성해야 함
@Configuration
public class JavaConfig {
@Bean
public Student student() {
return new Student();
}
}
Setter 메소드를 통해 의존 관계가 있는 빈을 주입 가능
@Configuration
public class JavaConfig {
@Bean
public Student student() {
Student student = new Student();
student.setName("홍길동");
student.setWallet(wallet());
return student;
}
@Bean
public Wallet wallet() {
return new Wallet();
}
}
생성자를 통해 의존 관계가 있는 빈을 주입 가능
@Configuration
public class JavaConfig {
@Bean
public Student student() {
return new Student("홍길동", wallet());
}
@Bean
public Wallet wallet() {
return new Wallet();
}
}
@Import 어노테이션을 사용하여 다른 Java 설정 파일을 가져오는 것이 가능
@Configuration
@Import(Config.class)
public class JavaConfig {
}
3.3. 어노테이션 방식
스프링 컨테이너 구동 시 생성해야 하는 객체(Bean)들과 의존 관계를 어노테이션을 사용하여 구성하는 방식
어노테이션으로 빈을 선언하기 위해서는 빈으로 생성하고 싶은 클래스에 @Component을 작성해야 함
@Component
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String name;
private Wallet wallet;
}
@Component 어노테이션이 작성된 클래스를 빈으로 생성하기 위해서는 컴포넌트 스캐닝(Component Scannig)을 통해서 스프링 컨테이너 구동 시 해당 클래스를 찾아 빈으로 등록하도록 설정해야 함
<!-- XML 방식 -->
<beans>
<context:component-scan base-package="com.ismoon.spring" />
</beans>
// Java 방식
@Configuration
@ComponentScan("com.ismoon.spring")
public class JavaConfig {
}
@Autowired 어노테이션을 사용하여 스프링 컨테이너에서 빈을 찾아 자동으로 의존성 주입 가능
@Autowired 어노테이션은 필드, 메소드, 생성자에 적용 가능
@Value 어노테이션을 사용하여 빈이 아닌 값을 주입 가능
@Component
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
@Value("홍길동")
private String name;
@Autowired
private Wallet wallet;
}