使用第三方注解@Bean使用场景

  • 项目中自定义的,使用@Component及其衍生注解
  • 项目中引入第三方的,使用@Bean注解

两者在使用方式和作用对象上存在一些区别。

  1. @Component:此注解主要作用于类级别。其功能是表明一个类会作为组件类,并告知Spring要为这个类创建bean。这通常通过类路径扫描自动配置bean来实现。

  2. @Bean:此注解则主要作用于方法级别。它告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。因此,@Bean注解的自定义性更强,我们可以根据需要在某个特定的方法中定义产生这个bean。

@Component和@Bean都用于向Spring容器中注册bean,但使用场景和方式有所不同。@Component更侧重于类的自动装配,而@Bean则关注于通过特定方法生成bean实例。

 使用第三方@Bean注解的小案例:

测试1: 

配置类:

@Configuration //配置类
public class CommonConfig {

    //声明第三方bean
    @Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean
          //通过@Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名
    public SAXReader reader(DeptService deptService){
        System.out.println(deptService);
        return new SAXReader();
    }
}

测试类:

    @Autowired
    private SAXReader saxReader;

    @Test
    public void testGetBean2(){
        Object saxReader = applicationContext.getBean("saxReader");
        System.out.println(saxReader);
    }

控制台输出:

 测试2:

 配置类:

@Configuration //配置类
public class CommonConfig {

    //声明第三方bean
    @Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean
          //通过@Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名
    public SAXReader reader(DeptService deptService){
        System.out.println(deptService);
        return new SAXReader();
    }
}

 测试类:

    @Autowired
    private SAXReader saxReader;

   @Test
    public void testGetBean2(){
        Object saxReader = applicationContext.getBean("reader");
        System.out.println(saxReader);
    }

 控制台输出:

测试3(不建议):

引入相关依赖(Dom4j是一个用于处理XML文档的Java库,它提供了一种简单而强大的方式来解析和操作XML数据):

        <!--Dom4j-->
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>

 配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<emp>
    <name>Tom</name>
    <age>18</age>
</emp>

启动类方法:

    //声明第三方bean
    @Bean //将当前方法的返回值对象交给IOC容器管理,成为IOC容器bean
    public SAXReader saxReader(){
        return new SAXReader();
    }

测试启动类:

    @Autowired
    private SAXReader saxReader;

 //第三方bean的管理
    @Test
    public void testThirdBean() throws Exception {
        //SAXReader saxReader = new SAXReader();

        Document document = saxReader.read(this.getClass().getClassLoader().getResource("1.xml"));
        Element rootElement = document.getRootElement();
        String name = rootElement.element("name").getText();
        String age = rootElement.element("age").getText();

        System.out.println(name + " : " + age);
    }

控制台输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值