第4章 Spring Bean基于注解的装配

4.1 Bean的定义及作用域的注解实现

  1. Bean定义的注解

    -- @Component是一个通用注解,可用于任何bean

    -- @Repository, @Service, @Controller是更有针对性的注解,利用元注解继承自@Component

      -- @Repository通常用于注解DAO类,即持久层

      -- @Service通常用于注解Service类, 即服务层

      -- @Controller通常用于Controller类,即控制层(MVC)

  2.元注解:许多Spring提供的注解可以作为自己的代码,即"元数据注解", 元注解是一个简单的注解,可以应用到另外一个注解

    如,@Service继承了@Component的全部特性,其他的@Repository,@Controller也是如此

        

  

  3. Bean的命名由 BeanNameGenerator生成, 默认是类名的首字母小写。 可以自定义命名方式,只需要实现BeanNameGenerator接口即可,并一定要包含一个无参构造器     

  4.类的自动检测及Bean的注册

  (注意和上一章的  ”自动装配“ 的区别。自动装配是指依赖注入,自动检测是指发现bean,这里没有用xml配置bean,而是使用注解去自动检测bean)

      XML配置

      

     

     使用过滤器自定义扫描,如下图中的include和exclude

    

   5.Bean的作用域

     -- 使用@Scope注解,默认是singleton

      

     -- 还可以自定义scope策略,实现ScopeMetadataResolver接口并提供一个无参构造器

      

   6.代理方式:使用scoped-proxy属性指定代理,可选:no, interfaces, targetClass

      

4.2-4.4 Bean的装配

  1.@Required 

    -- 适用于Bean属性的setter方法,这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过bean定义或者自动装配一个明确的属性值

    

  2.@Autowired

    -- 自动装配

    -- 可用于属性,构造器,setter方法

    -- 默认情况下,如果找不到合适的bean将会导致Autowiring失败抛出异常,可以通过下面方式避免,允许为null

        

    -- 每个类只能由一个构造器被标记为required=true

    -- @Autowired的必要属性,建议用@Required注解

    -- @Autowired可以注解依赖性接口,BeanFactory, ApplicationFactory, Environment, ResourceLoader, ApplicationEventPublisher, MessageSource等

        

    -- @Autowired是由Spring BeanPostProcessor处理的,所以不能在自己的BeanPostProcessor或者BeanFactoryPostProcess类型中应用这些注解,这些类型必须通过XML或者Spring的@Bean注解加载

  3.@Qualifier

    -- 有时候类型是接口的成员变量可能有多个实现类,@Qualifier 就是用来缩小范围的,指定使用那个接口的实现类来赋给当前的成员变量

      

    -- xml中也可以声明

      

    -- 实现自己的Qualifier注解

      

    --  @Autowired,@Resource, @Qualifier区别,(未懂)

      

4.5-4.8 基于Java的容器注解

  一 @Configuration @Bean

  1.@Bean和@Configuration相当于是XML中类似的元素 

    

    其中的bean类似于

      

  2. 自定义Bean Name

    

  3.init-method, destroy-method

    

  4.在使用@Bean时,当没有指定类名,那么就是方法的名称 ,当然了,这个例子中就是"getStringStore",可以看出,get这个多余的词并没有被去除掉

     

  二. @ImportResource @Value

    比方说,要引用这个资源文件

      

    1.xml中配置

        

    2.Java配置

      

  3.需要注意的是,username要是不加jdbc,形成jdbc.username这样的结构,那么username可能会被调用操作系统的用户名。所以为了不重复,前面要加jdbc.这样的前缀

  三 @Scope

  默认是单例,可以改

    

  四. 基于泛型的自动装配

    1.比如说这两个类型

       1)接口

          

       2)String实现类

          

      3)Integer实现类

          

    2.使用泛型

      

4.9 Spring对JSR的支持

  1.

    

  2.

    

    3.

      

    

Spring听课笔记(专题二下)的更多相关文章

  1. Spring听课笔记(专题二)

    第3章 Spring Bean的装配(上) 3-1:配置项及作用域 1.Bean的配置项: -- Id -- Class (这个必须,其他的都可以不配置) -- Scope (作用域) -- Cons ...

  2. Spring听课笔记(专题一)

    Spring入门课程:https://www.imooc.com/learn/196 第0章: Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架,应用非常广泛.业内非常流行的SS ...

  3. Spring使用笔记(二)Bean装配

    Bean装配 Spring提供了3种装配机制: 1)隐式的Bean发现机制和自动装配 2)在Java中进行显示装配 3)在XML中进行显示装配 一)自动化装配 1.指定某类为组件类: @Compone ...

  4. Spring 学习笔记(二)

      一.Spring 中的bean配置 –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).Fac ...

  5. Spring学习笔记(二)Spring基础AOP、IOC

    Spring AOP 1. 代理模式 1.1. 静态代理 程序中经常需要为某些动作或事件作下记录,以便在事后检测或作为排错的依据,先看一个简单的例子: import java.util.logging ...

  6. spring学习笔记(二)

    Spring的Bean管理:(注解方式) Spring的AOP:XML方式 Spring的AOP:注解方式 1.Spring的Bean管理的中常用的注解: * @Controller   :WEB层 ...

  7. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  8. Spring 学习笔记(二)—— IOC 容器(BeanFactory)

    使用Spring IoC容器后,容器会自动对被管理对象进行初始化并完成对象之间的依赖关系的维护,在被管理对象中无须调用Spring的API. 为了实现IoC功能,Spring提供了两个访问接口: or ...

  9. Spring学习笔记(二) 初探Spring

    版权声明 笔记出自<Spring 开发指南>一书. Spring 初探 前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例: Person接口Person接口定义 ...

随机推荐

  1. 基于数据库、redis和zookeeper实现的分布式锁

    基于数据库 基于数据库(MySQL)的方案,一般分为3类:基于表记录.乐观锁和悲观锁 基于表记录 用表主键或表字段加唯一性索引便可实现,如下: CREATE TABLE `database_lock` ...

  2. SQL中隔行编号的操作

    一般在sql中进行排序编号的时候都是: row_number() over(order by xxx) 但是有时候某些行不想让他们参与排序,这时候可以: row_number() over(order ...

  3. 【探索之路】机器人篇(4)-根据3D文件来优化自己的机器人模型

    此章节不是必须做的!!!! 因为我已经用solidworks画了机器人的3D模型,那我就直接导入已经画好的三维模型. 如果大家没有画也是可以直接使用上一章节我们已经构建的机器人模型.我这里只是一个对显 ...

  4. 使用纯 CSS 实现滚动阴影效果

    开门见山,有这样一种非常常见的情况,对于一些可滚动的元素而言.通常在滚动的时候会给垂直于滚动的一侧添加一个阴影,用于表明当前有元素被滚动给该滚出了可视区域,类似这样: 可以看到,在滚动的过程中,会出现 ...

  5. 第13章节 BJROBOT 雷达跟随【ROS全开源阿克曼转向智能网联无人驾驶车】

    雷达跟随说明:注意深度摄像头的 USB 延长线,可能会对雷达扫描造成影响, 所以在雷达跟随前,把深度摄像头的 USB 延长线取下.另外雷达跟随范围大概是前方 50cm 和 120°内扫描到的物体都可以 ...

  6. Redis基础篇(八)数据分片

    现在有一个场景:要用Redis保存5000万个键值对,每个键值对大约是512B,要怎么部署Redis服务呢? 第一个方案,也是最容易想到的,需要保存5000万个键值对,每个键值对约为512B,一共需要 ...

  7. Class 类文件结构

    本文部分摘自<深入理解 Java 虚拟机第三版> 概述 我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式.Java 虚拟机不与 Java 语言绑定,只与 Class ...

  8. [Statistic] 置信度

    背景 调研总体的情况时,常因调研成本等原因难以对总体情况逐一调研给出完全准确的结论.常以随机抽样的方式,通过统计样本估计总体. 单次随机抽样的结果可以看做是对总体结果的近似,但仍有不准确性.比如某次抽 ...

  9. MP(MyBatis-Plus)实现乐观锁更新功能

    实现步骤 step1:添加乐观锁拦截器 MP的其他拦截器功能可以参考官网 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { ...

  10. OpenTelemetry - 云原生下可观测性的新标准

    CNCF 简介 CNCF(Cloud Native Computing Foundation),中文为"云原生计算基金会",CNCF是Linux基金会旗下的基金会,可以理解为一个非 ...