구성 요소를 추가 할 SpringBoot 시리즈 스프링 컨테이너 방법

구성 요소를 추가 할 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의 샘플 코드 다운로드

추천

출처www.cnblogs.com/mzq123/p/11830470.html