`

spring 注解方式配置Bean

 
阅读更多

一、注解式装载Bean

 

1、配置扫描组件范围

  • 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件
  • 特定组件包括:
    • @Component:基本注解,标示了一个受Spring管理的组件 (可以混用,spring还无法识别具体是哪一层)
    • @Respository:建议标识持久层组件 (可以混用,spring还无法识别具体是哪一层)
    • @Service:建议标识服务层(业务层)组件 (可以混用,spring还无法识别具体是哪一层)
    • @Controller:建议标识表现层组件(可以混用,spring还无法识别具体是哪一层)
  • 对于扫描到的组件, Spring有默认的命名策略 :使用非限定类名,第一个字母小写( UserServiceImpl-》userServiceImpl ), 也可以再注解中通过value属性值标识组件的名称(通常可以将UserServiceImpl —》userService,可以将Impl拿掉,这是一个习惯)
  • 比如:

  •  
  • 注意:使用注解还需要导入spring-aop-4.0.5.RELEAE.jar这个包
  • 当在组件类中使用了特定的注解之后,还需要在Spring的配置文件中声明<context:component-scan>:

    • base-package属性指定一个需要扫描的基类包,Spring容器将会扫描整个基类包里及其子包中的所有类
    • 当需要扫描多个包时,可以使用逗号分隔
    • 如果仅希望扫描特定的类而非基包下的所有类,可使用resource-pattern属性过滤特定的类,实例: 
    • <context:include-filter>子节点表示要包含的目标类
    • <context:exclude-filter>子节点表示要排除在外的目标类
    • <context:component-scan>下可以拥有若干个<context:include-filter>和<context:exclude-filter>子节点
    • <context:include-filter>和<context:exclude-filter>子节点支持多种类型的过滤表达式: 
2、组件装配
  • <context:component-sacn>元素还会自动注册AutowireAnnotationBeanPostProcessor实例,该实例可以自动装配具有@Autowired 和@Resource、@Inject注解的属性

使用@Autowired自动装配Bean

  • @Autowired注解自动装配 具有兼容类型 的单个Bean属性
    • 可以放在构造器或普通字段(即使是非public)或一切具有参数的方法都可以应用@Authwired注解
    • 默认情况下,所有使用@Autowired注解的属性都需要被设置,当Spring找不到匹配的Bean装配属性时,会抛出异常, 若某一属性允许不被设置,可以设置@Authwired注解的required属性为false
    • 默认情况下,当IOC容器里存在多个类型兼容的Bean时(@Autowired先是按照类型匹配Bean,如果存在多个类型相同的Bean,此时IOC容器会去寻找与属性名相同名字的Bean),通过类型的自动装配将无法工作,此时可以在@Qualifier注解里Bean属性的名称。 Spring允许对方法的方法的输入参数标注@Qualifier以指定注入Bean的名称
    • @Authwired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的Bean进行自动装配
    • @Authwired注解也可以应用在集合属性上,此时Spring读取该集合的类型信息,然后自动装配所有与之兼容的Bean
    • @Authwired注解用在java.util.Map上时,若该Map的键值为String,那么Spring将会自动装配与之Map值类型兼容的Bean,此时Bean的名称作为键值

 使用@Resource或@Inject自动装配Bean

  • Spring还支持@Resource和@Inject注解,这两个注解和@Autowired注解的功能类似
  • @Resource注解要求提供一个Bean名称的属性,若该属性为空,则自动采用标注处的变量或方法名作为Bean的名称
  • @Inject和@Autowired注解一样也是按照类型匹配注入的Bean,但没有required属性
  • 建议使用@Autowired注解

 二、配置式装载

 

1.在Spring配置文件中添加类的配置:

Xml代码  收藏代码
  1. <bean id="hessianHelloWorldImpl" class="com.impl.HessianHelloWorldImpl"></bean>  

2.在Spring配置文件中添加业务类的配置

   业务类名为Test,在业务类中配置属性(helloworld)及属性指向托管bean的id,其中属性helloworld在业务类中命名必须一致,且有该属性的get/set方法

Xml代码  收藏代码
  1. <bean id="test" class="com.test.Test">  
  2.         <property name="helloWorld" ref="hessianHelloWorldImpl"></property>  
  3. </bean>  

 

3.在Test.java中添加

   private HessianHelloWorld helloWorld;

   与get/set方法

Java代码  收藏代码
  1. private HessianHelloWorld helloWorld;  
  2.   
  3. public HessianHelloWorld getHelloWorld() {  
  4.         return helloWorld;  
  5. }  
  6.   
  7. public void setHelloWorld(HessianHelloWorld helloWorld) {  
  8.         this.helloWorld = helloWorld;  
  9. }  

配置文件方式结束

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 13.8 KB
  • 大小: 5.3 KB
  • 大小: 6.6 KB
  • 大小: 6 KB
分享到:
评论

相关推荐

    自定义注解得使用,模拟spring通过注解方式创建bean实例

    本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...

    spring3零配置注解实现Bean定义

    标题《spring3零配置注解实现Bean定义》中蕴含的知识点主要包括Spring框架中的Bean定义配置方法的演进,特别是从Spring 2.5到Spring 3版本的过渡过程中,对于注解方式实现Bean定义的支持如何被引入和优化。...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    spring bean XML配置入门

    Spring容器通过XML配置文件或注解来定义Bean及其相互关系。 3. **XML配置文件**: "spring-beans"是Spring中用于配置Bean的XML文件。该文件包含了一系列的&lt;bean&gt;元素,每个元素表示一个Java对象的定义,包括类名、...

    Quartz2.2.1基于Spring注解方式配置Quartz

    本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入Quartz和Spring的相应依赖。在Maven的pom.xml文件中,添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler...

    spring注解方式解析

    在Spring框架中,注解方式的使用极大地简化了配置,提高了开发效率。本文将深入解析Spring中的注解式编程,主要包括IOC(Inversion of Control,控制反转)的自动装配和依赖注入的解析。 首先,我们来看一下IOC自动...

    Spring 注解 方式配制的小demo

    尽管我们无法直接访问这个链接,但我们可以基于常见的Spring注解配置实践来解释相关概念。 1. `@Component`:这是Spring中的基础注解,用于标记一个类为Spring管理的bean。它的子注解包括`@Service`、`@Repository`...

    spring注解开发--Bean加载控制.zip

    在Spring框架中,注解开发已经成为了主流,极大地简化了配置和bean的管理。本教程主要探讨的是如何在Spring中通过注解来控制Bean的加载,以实现更加灵活的依赖注入和应用程序控制。我们将深入理解以下几个核心概念:...

    dwr+spring 注解方式

    1. **Spring注解配置**: - `@Configuration`:标记一个类为Spring配置类,可替代传统的XML配置。 - `@ComponentScan`:用于扫描指定包下的所有@Component及其子注解(如@Service、@Repository、@Controller)的类...

    spring注解aop配置详解

    本篇将深入讲解如何通过注解来配置Spring AOP,以实现更加简洁、高效的代码编写。 首先,我们来看注解在Spring AOP中的应用。在传统的AOP配置中,我们需要定义切入点表达式和通知(advice)在XML配置文件中。然而,...

    IOC之基于注解的配置bean(上)

    基于注解的配置是Spring实现IOC的一种方式,它减少了XML配置文件的使用,提高了开发效率。本篇文章将深入探讨如何在Spring中使用注解来配置Bean。 首先,我们需要了解Spring中的核心注解。`@Component`是基础注解,...

    Spring 注解 小例子

    Spring注解的主要目的是消除XML配置文件,使开发者能够通过在类或方法上直接添加注解来声明对象及其依赖关系。这个小例子将深入探讨Spring框架中的主要注解及其用法。 1. `@Component`、`@Service`、`@Repository` ...

    day38 17-Spring的Bean的属性注入:注解方式

    总结,Spring的注解方式为Bean的属性注入提供了简洁、灵活的方式,大大减少了XML配置的工作量。通过深入理解这些注解以及其背后的工作原理,我们可以更好地利用Spring框架进行开发。同时,结合源码阅读和相关工具的...

    IOC之基于注解的配置bean(下)

    本篇文章主要探讨的是基于注解的配置bean,这是Spring IOC的一种实现方式,相比XML配置更为简洁、直观。 ### 1. 基于注解的配置 注解(Annotation)是Java语言提供的一种元数据,可以用于为编译器或JVM提供额外的...

    JavaEE 使用注解配置Bean的一个示例

    在JavaEE开发中,注解(Annotation)已经成为了一种强大的工具,它允许开发者在代码中嵌入元数据,简化了传统的XML配置方式。本示例将深入探讨如何使用注解来配置Bean,使得应用程序的配置更加简洁、直观。 首先,...

    Struts2+spring注解配置简介

    本篇文章将详细介绍如何在Struts2和Spring框架中结合使用注解进行配置,以简化开发过程。 首先,让我们了解Spring框架中的注解配置。Spring提供了如@Component、@Service、@Repository和@Controller等注解,用于...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Spring注解配置中间层供Struts2使用

    总结起来,这个场景展示了如何通过Spring注解配置创建和管理中间层服务,以及如何在不依赖Struts2默认配置的情况下,使Struts2能够使用这些服务。通过这种方式,我们可以充分利用Spring的注解驱动和依赖注入能力,...

    Spring demo 自动检测注解

    在Spring框架中,自动检测注解(Autowired)是核心特性之一,它极大地简化了依赖注入的过程,使得开发者能够更加专注于业务逻辑,而不是繁琐的配置。本文将深入探讨Spring中的自动检测注解及其工作原理。 首先,`@...

    spring配置文件----注解配置

    本主题聚焦于Spring框架的配置文件以及其中的注解配置方式。注解配置是Spring框架的一种简化配置手段,它允许开发者通过在类或方法上添加特定的注解,替代传统的XML配置文件,使得代码更加简洁且易于维护。 首先,...

Global site tag (gtag.js) - Google Analytics