XML, 애노테이션, 자바 코드로 작성된 빈 설정 정보가 전용 리더를 통해 읽혀져서 BeanDefinition 타입의 오브젝트로
변환된다.
그 정보를 IOC컨테이너가 활용한다.
빈 등록 방법
1.1 XML
<bean id="hello" class="packagePath.class"></bean>
1.2 XML:네임스페이스와 전용 태그
<bean id="mypointcut" class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression" value="execution(* *..*ServiceImpl.upgrade*(..))" />
</bean>
이 코드는 개발자가 작성한 코드가 아니라 스프링이 제공해주는 코드를 class정보에 작성한다.
네임스페이스와 전용 태그를 사용하면 다음과 같이 줄일 수 있다.
<aop:pointcut id="mypointcut" expression="execution(* *..*ServiceImpl.upgrade*(..))" />
2. @Component 애노테이션
@Component
public class AnnotatedHello{
}
@Test
public void 컴포넌트빈주입테스트(){
ApplicationContext ctx =
new AnnotationConfigApplicationContext(
"study.tobi.ioc.bean");
AnnotatedHello hello = ctx.getBean("annotatedHello", AnnotatedHello.class);
Assertions.assertThat(hello).isNotNull();
}
3. @Configuration과 @Bean 애노테이션
@Configuration
public class AnnotatedHelloConfig {
@Bean
public AnnotatedHello AnnotatedHello(){
return new AnnotatedHello();
}
}
@Test
public void 자바코드빈주입테스트(){
ApplicationContext ctx = new AnnotationConfigApplicationContext(AnnotatedHelloConfig.class);
AnnotatedHello hello = ctx.getBean("AnnotatedHello", AnnotatedHello.class);
AnnotatedHelloConfig config = ctx.getBean("annotatedHelloConfig", AnnotatedHelloConfig.class);
Assertions.assertThat(config).isNotNull();
}
메타정보 항목 추가
XML방식
<bean id="dataSource" class="...">
<property name=... value=...>
<property name=... value=...>
<property name=... value=...>
<property name=... value=...>
</bean>
자바코드 (@Configuration)
@Configuration
public class ServiceConfig {
@Bean
public DataSource dataSource() {
SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
dataSource.setDriverClass(org.mariadb.jdbc.Driver.class);
dataSource.setUrl("jdbc:mariadb://localhost:3307/bootex");
dataSource.setUsername("bootuser");
dataSource.setPassword("bootuser");
return dataSource;
}
}
'WEB > SPRING' 카테고리의 다른 글
토비2 1.5 프로필 (0) | 2024.03.19 |
---|---|
토비2 1.3 의존성 주입방법 (1) | 2024.03.12 |
토비의 스프링 7.6 스프링 3.1의 DI (1) | 2024.02.27 |
토비의 스프링 7.5.2 트랜잭션 적용하기 (0) | 2024.02.19 |
토비의 스프링 7.5 DI를 이용해 다양한 구현 방법 적용하기 (0) | 2024.02.16 |