手动将第三方资源加IOC容器中

说明:在SpringBoot中,我们可以通过在各层类上加注解(@Mapper、@Service等)声明Bean对象,在需要使用时,可直接使用@AutoWirted注解自动装配。但如果是使用第三方依赖中的对象,因为源码不能修改,不能在第三方依赖的类中加注解,所以如果想还使用自动自动装配,而不用new的方式创建对象,则可以使用以下方法实现。

(dom4j依赖中的SAXReader类,该依赖可用于解析XML文件,读取XML内容)

手动将第三方资源加IOC容器中_第1张图片

(通过new SAXReader对象的方式使用)

    @Test
    public void test01() throws DocumentException {
        // 创建SAXReader对象
        SAXReader saxReader = new SAXReader();
        
        // 读取XML文件
        Document document = saxReader.read(this.getClass().getClassLoader().getResource("demo.xml"));
        
        // 解析XML文件
        Element rootElement = document.getRootElement();
        
        // 输出读取内容
        String name = rootElement.element("name").getText();
        String age = rootElement.element("age").getText();
        System.out.println(name + " " + age);
    }

(demo.xml文件内容)


<emp>
    <name>张三name>
    <age>20age>
emp>

(输出内容)

手动将第三方资源加IOC容器中_第2张图片

手动添加对象到IOC容器中

不想使用new 对象的方式使用,可手动将对象添加到IOC容器中,需要用到@Configuration、@Bean注解

@Configuration:表示该类是一个配置类,该类的职责是手动配置对象到IOC容器中;

@Bean:表示该方法返回的对象加入到IOC容器中;

import org.dom4j.io.SAXReader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 手动添加SAXReader到IOC容器中
 */
@Configuration
public class AddConguration {

    @Bean
    public SAXReader addSAXReader(){
        return new SAXReader();
    }
}

手动配置完之后,其他类中可以使用@AutoWired注解自动装配并使用

	/**
     * 自动装配
     */
    @Autowired
    private SAXReader saxReader;

    @Test
    public void test01() throws DocumentException {
        
        // 读取XML文件
        Document document = saxReader.read(this.getClass().getClassLoader().getResource("demo.xml"));

        // 解析XML文件
        Element rootElement = document.getRootElement();

        // 输出读取内容
        String name = rootElement.element("name").getText();
        String age = rootElement.element("age").getText();
        System.out.println(name + " " + age);
    }

重新执行test01()方法,可以看到也可以达到效果

手动将第三方资源加IOC容器中_第3张图片

总结

值得一提的是,将手动添加对象到IOC容器中的方法写在启动类中也可以,因为@SpringBootApplication包含了@Configuration注解,也可以当做是配置类,但是不推荐,要保证启动类的纯粹性。

手动将第三方资源加IOC容器中_第4张图片

手动将第三方资源加IOC容器中_第5张图片

你可能感兴趣的:(java,mybatis,spring)