开发者社区> 技术小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Spring自动装配和注解配置

简介:
+关注继续查看

前面已经学会如何使用的<bean>元素来声明bean和注入<bean>,通过使用在XML配置文件<constructor-arg>和<property>元素。

Spring容器可以自动装配相互协作bean之间的关系,这有助于减少对XML配置,而无需编写一个大的基于Spring应用程序的较多的<constructor-arg>和<property>元素。

自动装配模式:

有下列自动装配模式,可用于指示Spring容器使用自动装配依赖注入。使用<bean/>元素的autowire属性为一个bean定义中指定自动装配模式。

模式 描述
no This is default setting which means no autowiring and you should use explicit bean reference for wiring. You have nothing to do special for this wiring. This is what you already have seen in Dependency Injection chapter.
byName Autowiring by property name. Spring container looks at the properties of the beans on which autowire attribute is set to byName in the XML configuration file. It then tries to match and wire its properties with the beans defined by the same names in the configuration file.
byType Autowiring by property datatype. Spring container looks at the properties of the beans on which autowire attribute is set to byType in the XML configuration file. It then tries to match and wire a property if its typematches with exactly one of the beans name in configuration file. If more than one such beans exists, a fatal exception is thrown.
constructor Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised.
autodetect Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType.

可以使用类型和constructor自动装配模式来连接数组和其他类型化的集合。

自动装配的局限性:

自动装配最好效果是它始终在一个项目中使用。如果自动装配不一般的使用,它可能会被混淆为开发人员可以使用它来连接只有一个或两个bean定义。不过,自动装配可以显著减少需要指定属性或构造器参数,但你应该使用它们之前考虑自动装配的局限性和缺点。

限制 描述
压倒一切的可能性 可以使用<constructor-arg>和<property>设置总是覆盖自动装配还指定依赖关系。
原始数据类型 不能自动装配所谓的简单类型包括基本类型,字符串和类。
混乱的本质 自动装配比显式装配确切的少,所以如果可能的话可以使用显式的连接。

从Spring2.5开始就有可能使用注释来配置依赖注入。而是采用XML来描述一个bean接线,你可以使用注解的相关类,方法或字段声明将bean配置到组件类本身。

注释注入在XML注入之前进行,因此后者的配置将覆盖前者通过两种方式连接的属性。

注释接线默认情况下不开启在Spring容器。所以,我们才可以使用基于注解的接线,我们将需要启用它在我们的Spring配置文件。因此,考虑到已在下列情况下,配置文件要使用的任何注释在Spring应用程序。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>

当<context:annotation-config/>配置后,您就可以开始注释代码表明,Spring自动连线的值到属性,方法和构造函数。让我们来看看几个重要的注解,以了解它们是如何工作的:

S.N. 注释与说明
1 @Required
@Required注释适用于bean属性的setter方法。
2 @Autowired
@Autowired 注释可以应用到bean属性的setter方法,非setter方法,构造函数和属性。
3 @Qualifier
@ Autowired随着@ Qualifier注释可以用来通过指定确切的bean将有线,除去混乱。
4 JSR-250 Annotations
Spring支持JSR-250的基础的注解,其中包括了@Resource,@PostConstruct和@PreDestroy注解。


原文发布时间为:2018-10-23
本文来自云栖社区合作伙伴“Java杂记”,了解相关信息可以关注“Java杂记”。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
springboot(四):thymeleaf使用详解
在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。 thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可
1108 0
SpringBoot整合elasticsearch
在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是mac或者linux可以参考https://www.jianshu.com/p/e47b451375ea,如果是windows可以自定百度一下。
1451 0
[Spring实战系列](13)使用注解自动装配
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/50644820 1. 简介 从Spring2.5开始,我们就可以使用注解的自动装配方式装配Spring Bean的属性。
652 0
SpringBoot使用RabbitMQ(二)
springboot使用rabbitmq发送回调队列
2878 0
SpringBoot【整合JSP】
SpringBoot中默认是不支持jsp的,但是我们某些情况下可以又需要用到,所以本文记录下SpringBoot整合jsp的过程
0 0
Spring Boot 应用可视化监控,一目了然!
Spring Boot 应用可视化监控,一目了然!
0 0
redis在springboot中的使用
redis在springboot中的使用
0 0
SpringBoot——SpringBoot集成MyBatis
SpringBoot——SpringBoot集成MyBatis
0 0
+关注
技术小能手
云栖运营小编~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Spring Boot 2.5开发实战
立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战
立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题)
立即下载