spring容器从哪些途径获取bean依赖关系元数据?

本文解析了Spring容器如何通过配置元数据管理应用组件,包括XML和Java类两种配置方式,以及如何使用注解实现依赖注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring容器的工作原理如下:

       比如在web应用中,你提供了一系列Controller、Service、Component类等,要想让它们能够被放入spring容器,并按照依赖关系组织起来,你需要告诉spring它们之间的关系,这个需要告诉spring容器的就叫做“配置元数据”(元数据就是描述数据的数据)。

元数据的形式:

1.XML

       这是一种传统的方式,在java1.5支持注解前,都是这么使用的。在spring2.5版本引入@Autowired、@Service、@Component等注解,可以把一些类的依赖关系从xml中解脱出来,放到pojo中。这样就可以大大减少xml文件中的<bean>标签,因为可以在xml中像下面这样配置:

<beans>
    <context:component-scan base-package="com.acme"/>
</beans>

然后,在base-package包中的类上加上@Controller、@Service、@Component等注解。

2.基于Java类的方式

       spring3.0开始引入,如@Configuration, @Bean, @Import这些注解,这种方式允许把配置信息放入java类中,这样可以彻底摆脱xml文件,把所有的配置信息都放到类中。
不使用xml方式,通过编码方式使用纯注解启动spring容器:

@Configuration
public class AppConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

public static void main(String[] args) {
    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    MyService myService = ctx.getBean(MyService.class);
    myService.doStuff();
}

       需要说明的是,spring容器并没有和哪一种提供元数据的方式耦合,你可以随意使用上述的2种形式,也可以混合使用。比如在基于java类的配置方式中,你也可以用@ImportResource来引入别的XML文件,类似于传统的<import>标签。不过现在大家都倾向于使用基于java类的方式了。

参考资料:
1.https://docs.spring.io/spring/docs/5.1.5.RELEASE/spring-framework-reference/core.html#spring-core

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值