`
liujiekasini0312
  • 浏览: 146999 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring IOC--Bean的装配(使用注解定义Bean)

 
阅读更多

概述

在spring中,不管是使用xml还是使用注解,实质上都是为spring容器提供bean的定义信息。而spring容器能够成功启动的三大重要因素是:Bean定义信息、Bean实现类、以及spring本身。如果采用XML配置Bean,那么Bean实现类和Bean定义信息是分离的,如果是用注解,那么Bean的定义信息和实现类都是在一起的,表现在Bean实现类的注解上。

下面是一个简单的dao层的bean注解配置:
  1. packagecn.qing.spring.dao;
  2. importorg.springframework.stereotype.Component;
  3. @Component("userDao")
  4. publicclassUserDao{
  5. }
在UserDao中使用@Component注解对其进行标注,它会被Spring容器识别,然后自动转换成能被容器管理的Bean。它等效于一下的XML配置:
  1. <beanid="userDao"class="cn.qing.spring.dao.UserDao"/>
除了@Component注解外,Spring还提供了3个功能和@Component基本等效的注解,它们分别用于对DAO、service、及web层的controller进行注解,也称这些注解为Bean的泛型注解。

@Repository:用于对dao实现类进行标注。
@Service:用于对service层实现类进行标注。
@Controller:用于对web的控制层实现类进行标注。

之所以在@Component注解之外又定义3个注解,是为了让注解类本身的用途清晰化。此外spring将赋予它们特殊的功能,所以推荐使用特别的注解标注特定的Bean.
只是在Bean的实现类上添加上以上注解还是不够的,spring并不会自动扫描出这些带注解的类并将其转换成Bean,所以需要在spring的配置文件中配置spring需要扫描的包,使用下面的<context:component-scan />标签进行配置:
  1. <!--在使用注解时,在此配置spring要扫描加载的bean的basepackage-->
  2. <context:component-scanbase-package="cn.qing.spring"/>

自动装配Bean:

  1. @Repository("userDao")
  2. publicclassUserDao{
  3. @Autowired
  4. privatePersonInfopersonInfo;
  5. publicvoidprintPersonInfo()
  6. {
  7. System.out.println("personInfo:"+personInfo.toString());
  8. }

上面的personInfo对象是使用@Autowired注解进行注入。
使用@Autowired注解进行bean属性的自动注入,等同于下面的XML配置:
  1. <propertyname="personInfo"ref="personInfo"/>
而且使用@Autowired注解不需要为要注入的属性对象提供setter和getter方法,@Autowired注解是按照类型进行装配的,在运行时spring查找容器中匹配的bean,当有且只有一个匹配的bean时,spring将其注入到由@Autowired配置的变量中。在使用@Autowired注解是可以结合@Qualifier注解一起使用,@Qualifier注解是用来指定注入Bean的名称,如果指定的名称在spring中不存在,spring容器会报错。
  1. @Repository("userDao")
  2. publicclassUserDao{
  3. @Autowired
  4. @Qualifier("personInfo")
  5. privatePersonInfopersonInfo;

使用注解配置bean的作用范围:

通过注解配置的bean和通过<bean>标签配置的Bean一样,默认的作用范围都是singleton,在使用注解配置scope的时候,spring提供的注解是@Scope,它可以显示指定bean的作用范围。
  1. @Scope("prototype")
  2. @Repository("userDao")
  3. publicclassUserDao{
  4. @Autowired
  5. @Qualifier("personInfo")
  6. privatePersonInfopersonInfo;

上面的代码使用@Scope注解将bean的作用范围设置为prototype,这样每次spring容器都返回一个新的bean实例。在xml中配置bean时,可以设置bean的init-method属性和destroy-method属性来配置bean的初始化和销毁时执行的方法,spring支持java中提供的注解:@PostConstruct和@PreDestroy来设置初始化和销毁bean时的方法。
  1. <spanstyle="white-space:pre"></span>@PostConstruct
  2. publicvoidinitMethod()
  3. {
  4. System.out.println("thisisinitmethod!");
  5. }
  6. @PreDestroy
  7. publicvoiddestroyMethod()
  8. {
  9. System.out.println("thisisdestroymethod.");
  10. }
值得说明的是,当使用@PostConstruct和@PreDestroy注解配置Bean时,可以有多个对应的方法,spring在执行的时候也会把设置过这两个注解的所有方法都执行。
分享到:
评论

相关推荐

    Spring-ioc-jar

    学习Spring IOC,你需要理解Bean的定义、作用域、依赖注入的原理和方式,以及如何通过配置文件或注解来配置Bean。同时,掌握如何利用ApplicationContext获取Bean,以及如何利用AOP和生命周期管理功能,将帮助你更好...

    Spring IoC简单示例-注解配置-Maven构建

    Spring IoC容器通过解析XML配置文件或使用注解来识别对象及其依赖关系,并在运行时自动装配这些对象,这就是依赖注入。 在Spring中,注解配置是取代传统XML配置的一种方式,它使得代码更加简洁、易读。例如,我们...

    spring IOC反射装载bean

    在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...

    Spring的IoC实现案例

    在本文中,我们将深入探讨如何使用Spring的Inversion of Control(IoC)容器来实现一个具体的案例:控制打印机(Printer)类与不同类型的纸张(Paper)类的交互。Spring的IoC允许我们解耦组件,使代码更加灵活且易于...

    模拟Spring的IoC容器实现注解自动装配

    而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...

    Spring-IOC实现

    下面,我们将深入探讨Spring-IOC的实现,包括注解的使用和注解解析。 1. **控制反转(IOC)概念** - 控制反转是设计模式中的一个概念,它改变了传统的对象获取方式。在没有IOC的情况下,对象通常自行创建依赖。而...

    实现Spring那样的Ioc注解装配

    本文将深入探讨如何实现一个类似于Spring的IoC注解装配机制。 IoC是Spring的核心概念,它通过反转对象的创建和管理权,将这些任务交给容器来处理,从而使开发者可以更专注于业务逻辑。在Spring中,DI是IoC的一种...

    spring在IoC容器中装配Bean详解

    在这些配置中,Spring 容器将读取 Bean 的配置信息,形成 Bean 定义注册表,然后实例化 Bean,将其放入 Bean 缓存池中,供应用程序使用。 二、Bean 基本配置 Bean 的基本配置包括 Bean 的命名、依赖注入和自动...

    以注解方式模拟Spring IoC AOP

    - **基于注解的AOP**:Spring支持在方法上直接定义切面注解,如`@Before`, `@After`, `@Around`等。当目标方法被调用时,Spring会检查是否有相关的切面注解并执行相应操作。 为了模拟AOP,我们可以创建一个拦截器...

    第四章 在Ioc容器中装配Bean

    Spring IoC容器在装配Bean时还可以应用生命周期回调,例如实现InitializingBean和DisposableBean接口,或者使用@PostConstruct和@PreDestroy注解,可以在Bean的生命周期的特定点执行代码。 除了上述提到的装配方式...

    Spring Ioc源码分析系列--@Autowired注解的实现原理.doc

    Spring Ioc源码分析系列--@Autowired注解的实现原理 @ Автоwired注解是 Spring Framework 中的一个重要组件,它提供了自动装配的功能,能够将 Bean 之间的依赖关系自动解析和注入。今天,我们将深入探讨 @...

    Spring-MVC+Spring-IOC+Spring-JdbcTemple

    开发者定义Bean的配置,而IOC容器负责创建、装配和管理这些Bean。使用XML、注解或者Java配置,可以声明Bean及其依赖。这种方式使得代码更加解耦,易于测试和维护。 **Spring JDBC Template** Spring JDBC Template...

    spring ioc思维导图源文件

    以上只是Spring IOC的一部分知识点,实际上还包括更多高级特性,如自动装配、 Profiles、SpEL(Spring Expression Language)等。理解并掌握这些内容,有助于我们更好地利用Spring框架进行开发。而通过"spring ioc...

    spring-demo10-注解-IOC.zip

    在这个"spring-demo10-注解-IOC"的示例中,我们可以期待看到如何创建和配置带有注解的bean,如何使用 `@Autowired` 进行依赖注入,以及可能的AOP配置。通过查看源代码,我们可以学习到如何在实际项目中应用这些注解...

    Spring通过注解实现IOC

    总结来说,Spring通过注解实现的IOC,主要包括了Bean的声明、依赖的自动装配、作用域的定义、生命周期方法的控制以及属性值的注入等功能。通过这些注解,开发者可以轻松地管理和控制应用程序中的对象,实现松散耦合...

    SpringIOC经典Demo

    2. **Bean的定义与管理**:在Spring中,我们使用XML配置文件或者基于注解的方式定义Bean。Bean定义包含了类名、初始化方法、依赖关系等信息。Spring容器根据这些定义来创建和管理Bean。例如,在`Spring-IOC示例.doc`...

    spring IOC实现(墨者革离)

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交给了Spring容器,从而让开发者从繁琐的依赖管理中解脱出来,更专注于业务逻辑的实现。在这个名为"spring_IOC实现...

    Spring--IOC

    比如,我们可以使用`@Component`注解标记一个类作为Spring的bean,用`@Autowired`自动装配依赖: ```java @Component public class ExampleClass { @Autowired private DependencyClass dependency; } ``` **...

    spring ioc和aop原理流程图(详细)

    Spring容器负责管理Bean的生命周期,并根据Bean之间的依赖关系进行实例化和装配。依赖可以通过属性注入、构造函数注入或方法注入等方式实现。 4. **Bean的作用域**:Spring提供了多种Bean的作用域,如单例...

    SpringIoc示例代码

    1. **Bean定义**:在Spring中,一个Java类可以被声明为一个Bean,这可以通过XML配置文件中的`&lt;bean&gt;`标签实现,或者使用`@Component`、`@Service`、`@Repository`、`@Controller`等注解。Bean定义包含了类名、属性值...

Global site tag (gtag.js) - Google Analytics