Spring听课笔记(专题二下)
第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听课笔记(专题二下)的更多相关文章
- Spring听课笔记(专题二)
第3章 Spring Bean的装配(上) 3-1:配置项及作用域 1.Bean的配置项: -- Id -- Class (这个必须,其他的都可以不配置) -- Scope (作用域) -- Cons ...
- Spring听课笔记(专题一)
Spring入门课程:https://www.imooc.com/learn/196 第0章: Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架,应用非常广泛.业内非常流行的SS ...
- Spring使用笔记(二)Bean装配
Bean装配 Spring提供了3种装配机制: 1)隐式的Bean发现机制和自动装配 2)在Java中进行显示装配 3)在XML中进行显示装配 一)自动化装配 1.指定某类为组件类: @Compone ...
- Spring 学习笔记(二)
一.Spring 中的bean配置 –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).Fac ...
- Spring学习笔记(二)Spring基础AOP、IOC
Spring AOP 1. 代理模式 1.1. 静态代理 程序中经常需要为某些动作或事件作下记录,以便在事后检测或作为排错的依据,先看一个简单的例子: import java.util.logging ...
- spring学习笔记(二)
Spring的Bean管理:(注解方式) Spring的AOP:XML方式 Spring的AOP:注解方式 1.Spring的Bean管理的中常用的注解: * @Controller :WEB层 ...
- Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合
一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...
- Spring 学习笔记(二)—— IOC 容器(BeanFactory)
使用Spring IoC容器后,容器会自动对被管理对象进行初始化并完成对象之间的依赖关系的维护,在被管理对象中无须调用Spring的API. 为了实现IoC功能,Spring提供了两个访问接口: or ...
- Spring学习笔记(二) 初探Spring
版权声明 笔记出自<Spring 开发指南>一书. Spring 初探 前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例: Person接口Person接口定义 ...
随机推荐
- spring传播机制注意点
在同一个类里面spring的传播机制是不起作用的比如说在执行saveA方法的时候调用C方法插入C设置的传播属性是不使用事物 但是执行的效果是saveA方法抛出异常后导致C的记录回滚了也就是说明C方法设 ...
- Linux嵌入式学习-USB端口号绑定
由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,机器人每次开机都要蛋疼的按顺序插, 在网上找到一种方法:udev的规则 udev的规则说明,可以参考博客说明:ht ...
- python之scrapy篇(一)
一.首先创建工程(cmd中进行) scrapy startproject xxx 二.编写Item文件 添加要字段 # -*- coding: utf-8 -*- # Define here the ...
- java线程调度
JAVA线程调度分抢占式和协调式 协调式的线程切换由线程本身自己控制,好处是实现简单,当前线程只有当事情做完才会通知系统进行切换并没有同步开销,坏处是容易引发事故,假如阻塞的线程由于代码BUG没有通知 ...
- 聊一聊这个总下载量3603w的xss库,是如何工作的?
上篇文章这一次,彻底理解XSS攻击讲解了XSS攻击的类型和预防方式,本篇文章我们来看这个36039K的XSS-NPM库(你没有看错就是3603W次, 36039K次,36,039,651次,数据来自h ...
- 2020DevOps状态报告——平台模型:扩展DevOps的新方法
平台模型是我们在这个领域看到越来越多的方法,它源于负责产品或服务的端到端交付的产品团队的理念.如果只应用于单一的产品,或者几个产品,它的效果很好. 但如果有数百种产品或服务,把一个产品团队用于这些产品 ...
- 2020再见&新的计划(建立Android体系架构)
2020,再见 关于2020,我心中有四个关键词: 疫情 年初突如其来的疫情,打破了原本生活的节奏,也没想到会笼罩全世界整整一年,希望这个世界早点好起来吧. 科比 初三的早晨,噩耗传来,我一度不敢相信 ...
- .NET Core 中的日志与分布式链路追踪
目录 .NET Core 中的日志与分布式链路追踪 .NET Core 中的日志 控制台输出 非侵入式日志 Microsoft.Extensions.Logging ILoggerFactory IL ...
- 如何不使用 overflow: hidden 实现 overflow: hidden
一个很有意思的题目.如何不使用 overflow: hidden 实现 overflow: hidden? CSS 中 overflow 定义当一个元素的内容太大而无法适应块级格式化上下文时候该做什么 ...
- 解放双手,markdown文章神器,Typora+PicGo+七牛云图床实现自动上传图片
本文主要分享使用Typora作为Markdown编辑器,PicGo为上传图片工具,使用七牛云做存储来解放双手实现图片的自动化上传与管理.提高写作效率,提升逼格.用过 Markdown 的朋友一定会深深 ...