`

spring注解标签收集

 
阅读更多
利用@Autowired 注解可以对相应类型注入依赖。域、构造器和方法都可以激活此行为。实际上,aotowired方法并不一定要是setter方法,且可以接受多个参数。下面这个例子是完整的可接受的用法:
@Autowired
public void setup(DataSource dataSource, AnotherObject o) { ... }
默认地,标有@Autowired注解的依赖被认为是必须的。然而,也可以将required属性值设置为false来声明它们中的任何一个。在下面这个例子中,DefaultStrategy只有在context命名空间中没有SomeStrategy类型的Spring管理对象时才能被使用。
@Autowired(required=false)
private SomeStrategy strategy = new DefaultStrategy();
通过类型进行的自动装配明显地在Spring context包含多于一个期望类型的对象的时候造成歧义。默认地,如果一个必须的依赖没不是恰好一个bean与之对应的话,自动装配机制就会失败。同样的,对于任何一个可选属性,如果它拥有一个以上的候选,也都会失败(如果属性可选且没有任何候选可用的话,该属性则会被简单地跳过)。有很多不同的配置选项可以避免这些冲突。
若Context中拥有一个指定类型的一个主关键实例,对这个类型定义的bean定义应该包含‘primary’属性。当Context中含有其他可用实例的时候这个方法就很适用,但那些非主关键实例总是显式配置的。
id="dataSource" primary="true" ... />
在需要更多控制的时候,任何autowired的域、构造参数、或者方法参数可以进一步加注@Qualifier注解。qualifier可以包含一个字符串值,在这种情况下,Spring会试图通过名字来找到对应的对象。
@Autowired
@Qualifier("primaryDataSource")
private DataSource dataSource;
@Qualifier作为一个独立注解存在的主要原因是它可以被应用在构造器参数或方法参数上,但上文提到的@Autowired注解只能运用在构造器或方法本身。
@Autowired
public void setup(@Qualifier("primaryDataSource")
DataSource dataSource, AnotherObject o) {
...
}
@Qualifier作为一个单独的注解在定制化方面提供了更多的好处。用户自定义的注解在自动装配过程中也可以起到qualifier的作用,最简单的实现方式是在运用自定义注解的同时将@Qualifier作为它的元注解。
@Target({ElementType.FIELD, ElementType.PARAMETER,
ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface VetSpecialty { ... }
自定义注解可以选择包含一个值来提供通过名字匹配的功能,但更普遍的用法是将它作为“标记”注解或定义一个对qualifier过程提供一些更多含义的值。例如,下面这个摘录则描绘了一个域,它应该和通过名字匹配得到的结果中合格的对象进行自动装配。
@Autowired
@VetSpecialty("dentistry")
private Clinic dentistryClinic;
在使用XML配置来达到依赖解析的目标时,'qualifier' 子元素可以被加注到bean定义中。在下文的组件扫描部分,我们将呈现一个可供选择的非XML方法。
id="dentistryClinic" class="samples.DentistryClinic">
type="example.VetSpecialty" value="dentistry"/>
为了避免对@Qualifier注解的任何依赖性,可以在Spring context中提供一个CustomAutowireConfigurer的bean定义并直接注册所有自定义注解类型:
<bean class="org.springframework.beans.factory.annotation.CustomAutowireConfigurer">
<property name="customQualifierTypes">
<set>
<value>example.VetSpecialty</value>
</set>
</property>
</bean>
现在,自定义修饰符被显式声明了,就不再需要@Qualifier这个元注解符了。
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE,
ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface VetSpecialty { ... }
其实,在配置AutowiredAnnotationBeanPostProcessor的时候,取代@Autowired注解都是有可能的。
class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
name="autowiredAnnotationType" value="example.Injected"/>
分享到:
评论

相关推荐

    springframework.zip

    "jar"标签可能指的是压缩包中包含的Java Archive文件,这是Java平台的标准归档格式,用于收集多个类文件和其他资源。Spring框架通常会发布一系列的JAR文件,每个文件对应框架的不同模块,如Spring Core、Spring ...

    spring资料收集

    标签同样为“spring资料收集”,进一步确认了这些文件的核心主题,即Spring框架的学习和研究。 压缩包中的文件名称列表提供了更具体的信息,我们可以推测每个文件的内容: 1. "Spring 3 DAO 异常处理_P.p.run_百度...

    mybatis和spring整合jar包

    3. **Spring的Mapper扫描器**:通过使用`&lt;mybatis:scan&gt;`标签,Spring可以自动发现并管理所有的Mapper接口。 4. **事务管理**:Spring可以管理MyBatis的事务,通过配置事务管理器(如DataSourceTransactionManager...

    spring3.2.0最新版本

    标签中提到的"ssh"代表Struts、Spring和Hibernate,这是经典的Java EE开发“铁三角”,它们一起构成了一种流行的企业级应用架构。而"jsp"和"servlet"是构建Web应用的基础,Spring 3.2.0能够很好地与这些技术整合,...

    spring mvc login demo

    标签中的“源码”意味着我们可以从`logindemo`项目中学习到具体的代码实现。"工具"可能指的是Spring Tool Suite (STS) 或IntelliJ IDEA等开发工具,它们提供了对Spring MVC项目的强大支持,包括自动配置、代码提示和...

    SpringAOP.rar_springAOP

    通过 `&lt;aop:config&gt;` 和 `&lt;aop:aspect&gt;` 标签在Spring配置文件中定义切面和通知。 五、总结 Spring AOP通过将关注点分离,提升了代码的可读性和可维护性,简化了复杂系统的管理。理解并熟练运用Spring AOP,能够让...

    spring web flow 官方文档

    安全元素是Spring Web Flow中用于标记需要保护的状态或转换的标签。它支持细粒度的安全策略配置,增强了安全性控制的灵活性。 #### 8.4 The Security Flow 安全工作流是专门用于处理身份验证、授权和安全策略执行的...

    spring

    10. **Spring Boot Actuator**:提供了监控和管理Spring Boot应用的工具,如健康检查、指标收集等。 通过深入学习Spring框架,开发者可以构建出高效、可维护的企业级应用,同时也能掌握一系列现代开发的最佳实践。

    springcloud 微服务(全套视频)

    由于提供的部分内容不清晰,我们将基于标题、描述以及标签中的信息来展开相关知识点。 ### Spring Cloud微服务简介 #### 1. 微服务架构概述 - **定义**:微服务架构是一种设计模式,它将单个应用程序开发为一组...

    Spring Boot 中文文档.pdf

    根据提供的文档信息,我们可以从标题、描述、标签以及部分章节标题中提炼出一系列与Spring Boot相关的知识点。下面将详细介绍这些知识点: ### Spring Boot 概述 #### 1. 关于文档 - **目的**:该文档旨在为Spring...

    Spring 打印机

    由于没有具体的描述内容,我们将根据“源码”和“工具”的标签来探讨Spring框架中的相关知识点。 在Spring框架中,日志和打印信息是非常重要的部分,它有助于开发人员理解和调试应用程序的行为。Spring本身支持多种...

    spring+struts2+mabatis JAR

    MyBatis是一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件或注解中,与Java对象进行映射,减少了手动操作数据库的工作量。MyBatis强调了SQL的灵活性,使得开发者能够编写复杂的查询,同时保持代码的清晰...

    spring boot (一)

    【Spring Boot简介】 Spring Boot是由Pivotal团队提供的全新框架,其设计目标是用来...在实际开发中,我们可以结合标签中的"源码"和"工具"主题,深入学习Spring Boot的源码实现,以及如何利用相关工具提升开发效率。

    Spring-AOP(前置/后置/环绕)通知的例子

    了解了这些基础知识后,我们可以结合标签"源码"和"工具",进一步研究Spring AOP的底层实现原理。Spring AOP通过动态代理机制(JDK Proxy或CGLIB)创建代理对象,拦截方法调用并执行通知。对于非接口实现类,Spring会...

    spring-boot-dubbo-demo

    【标签】"spring boot dubbo" 标签明确了项目的关键词,Spring Boot是Java生态中的轻量级框架,它简化了Spring应用的初始搭建以及开发过程;Dubbo则是分布式服务框架,两者结合可以创建高效的微服务架构。 在实际的...

    spring-boot-1.5.19.RELEASE.tar.gz

    - 自动配置:基于已知的 Spring 容器 bean 和条件注解来自动配置应用。 - 内嵌的 web 服务器:如 Tomcat 或 Jetty,允许开发者无需部署到外部服务器即可运行应用。 - Actuator:提供了一组端点,用于监控和管理应用...

    spring boot 使用笔记,方便快速构建项目springboot笔记 .pdf

    - `&lt;parent&gt;` 标签继承自 `spring-boot-starter-parent`,这可以帮助统一管理和控制所有依赖的版本,避免版本冲突。 - `&lt;dependencies&gt;` 中添加 `spring-boot-starter-web`,引入了 Web 开发所需的相关依赖,包括 ...

    Spring MVC Demo.doc

    在Spring MVC中,控制器负责处理来自客户端的请求,通常会继承自`AbstractCommandController`或使用`@Controller`注解的类。在这个例子中,`UserController`继承了`AbstractCommandController`,它提供了数据绑定和...

Global site tag (gtag.js) - Google Analytics