구성 요소를 추가 할 SpringBoot 시리즈 스프링 컨테이너 방법
이 블로그는 SpringBoot 프로젝트는 명백한 장점은 단지 유사한 기능을 달성 할 수 SpringBoot 주석을 사용, 쓰기 XML 설정 파일에 필요 없다,하지만 사실 SpringBoot 프로젝트, SpringBoot 프로젝트 구성 요소가 Spring 컨테이너에 추가됩니다 설명 이 블로그는 두 가지 방법을 소개 할 수 있도록하거나, XML 구성 파일의 도입을 지원
좋아, @ImportResource 코멘트 SpringBoot 프로젝트에 대해 말해,이 댓글의 역할은 스프링 컨테이너에로드 일부 XML 자원을 소개하는 것입니다
클래스 TestBean 구축
public class TestService {
}
새로운 beans.xml 환경을 만들기 콩 구성의 서비스를 쓰기
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testService" class="com.example.springboot.properties.service.TestService"></bean>
</beans>
Application 클래스는 직접 참조 할 수 있습니다, 또는 당신은 위의 구성 구성 클래스를로드 할 수 있습니다
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ImportResource(locations = {"classpath:beans.xml"})
public class SpringbootPropertiesConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootPropertiesConfigApplication.class, args);
}
}
의 JUnit 테스트 클래스 :
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
@SpringBootTest
class SpringbootPropertiesConfigApplicationTests {
//装载ioc容器
@Autowired
ApplicationContext ioc;
@Test
void contextLoads() {
//测试这个bean是否已经加载到Spring容器
boolean flag = ioc.containsBean("testService");
System.out.println(flag);
}
}
테스트 후, 반환 변화 Springboot 주석을 달성하기 위해 사실, 좋아, 방법은
PropertiesConfig 구성 클래스 만들기 주의 : ID가 메소드 이름 구성 요소입니다
import com.example.springboot.properties.service.TestService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration //@Configuration注解实践上也是一个Component
public class PerpertiesConfig {
//通过@Bean注解将组件添加到Spring容器,组件的id就是方法名
@Bean
public TestService testService1(){
return new TestService();
}
}
의 JUnit 테스트는 계속 :
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
@SpringBootTest
class SpringbootPropertiesConfigApplicationTests {
@Autowired
ApplicationContext ioc;
@Test
void contextLoads() {
//传方法名testService1
boolean flag = ioc.containsBean("testService1");
System.out.println(flag);
}
}
변경된 이름으로 testService 반환 FALSE, 방법으로 경우 구성 요소 이름이 해당 노트의 이름이기 때문에 JUnit 테스트하거나, TRUE를 반환 @Bean
사실, 나는 봄 프로젝트를 작성하는 데 사용, 당신은 또한 @Service @Controller 주석을 사용하거나 사실, 지점의 소스 코드를 보면, 컨테이너에 구성 요소를 추가 할 수있는 것이 분명하다 한 가지 공통점이 주석 @Component 메모를 도입했으며, 이 블로그는 본질적으로 설명 @Configuration 주석, @Component 주석의 도입,하지만 당신은 단지 @Configuration 주석을 추가하지 않고 @Bean을 추가 할 경우 경우 있도록 @Bean이 도입되지 않은, 구성 요소를 추가하지 않는 것입니다 스프링 컨테이너
소스 예 : GitHub의 샘플 코드 다운로드