zoukankan      html  css  js  c++  java
  • spring中的@bean注解

    spring的注解分类

    从广义上讲,spring注解可以分为两类,一类注解是用于注册bean,一类注解用于使用bean。

    假如ioc容器就是一间空屋子,首先这间空屋子里面啥也没有,我们要给这个空屋子添置家具的操作,就相当于每个注册bean的注解的作用,意思就是说,注册bean的注解作用,就是往ioc容器中放置(注册)东西。

    用于注册bean的注解,比如@component、@repository、@controller、@service和@configration等,用途都是注册bean并放入到ioc容器中,一来是交给spring统一管理方便解耦,而来是可以重复使用,还是前面的例子,给空屋子添置的家具总不会都是一次性使用的,比如沙发,你只要一次注册了,每次想要休息就往上一躺就好了,而不是每次都到屋子外去搬进来(重新注册),节省了力气(重新注册的资源消耗),这也是为什么在spring里绝大部分bean都是单例模式的原因。

    而用于使用bean的注解,比如@autowired、@resource等,用途都是从ioc容器中拿到注册好的bean以方便使用。使用这些注解的前提是ioc容器中有相应的被注册号的bean,如果ioc容器中没有,比如屋子里没有沙发,你还往地板上硬躺,就会很难受甚至受伤(报错)。

    @bean注解概述

    根据上面的分类,@bean注解应该归类于用于注册bean的注解。

    为什么要有@bean注解呢?这是因为类似于@component、@repository、@controller和@service这些注册bean的注解都存在一定的局限性,局限于只能作用于自己编写的类,但是如果是一个jar包的第三方库要加入到ioc容器中的话,这些注解就无能为力了。为了解决这样的问题,@bean注解就产生了(当然了,还有@import注解也可以做到这一点,且更加方便快捷)。

    @bean注解是被设计使用在方法上的,在方法上使用@bean注解的时候,该方法就会被告知去产生一个bean对象,然后这个bean对象交给spring管理,且产生这个bean对象的方法在整个spring的生命周期中只会被调用一次,调用完成之后spring会将这个bean对象放在自己的ioc容器中。

    class Yanggb {
        @Bean
        public YanggbDao createYanggbDaoBean(){
            return new YanggbDao();
        }
    }

    在上面的例子中,createYanggbDaoBean方法就会产生一个YanggbDao对象,并将这个对象交给Spring管理(放到ioc容器中)。到这里很容易就能明白,@bean注解是使用在方法上的注解,它会明确地告诉被注解的方法去产生一个bean对象并交给spring容器管理。简单点说就是,@bean注解放在方法上,让方法去产生一个bean交给spring容器。

    因为@bean注解是使用在方法上的,因此使用@bean注解的另一个好处就是能够动态获取一个bean对象,且能够根据环境不同得到不同的bean对象。

    另外,@bean注解和xml配置中的bean标签的作用是一模一样的。

    "人的感情很微妙,没有直白的表达,并不代表没有感情。"

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    Head First HTML与CSS阅读笔记(一)
    Redis安装配置及在Python上的应用
    PXE+Kickstack实现无人值守安装CentOS 7操作系统(附一台CentOS7实现CentOS6和CentOS7双系统安装)
    Linux常用命令之diff使用介绍
    渗透测试专业术语
    CentOS7之SVN服务配置
    Linux下面误删除文件使用extundelete工具恢复介绍
    Linux单元测试题一
    Linux下面MariaDB 管理命令基础使用
    Linux中/etc下面passwd和shadow文件介绍
  • 原文地址:https://www.cnblogs.com/yanggb/p/14897327.html
Copyright © 2011-2022 走看看