@Repository,@Service,@Controller这三个注解是基于component定义的注解

component-scan:组件扫描

base-package:扫描这个下的所有类

<context:component-scan>和<context:annotation-config>的区别:

前者可以扫描基于类的注解,但是后者只能在完成bean的注册之后去处理bean中的方法或者是成员变量的注解,在使用前者的时候已经包含了后者的全部功能,通常在开发的过程使用的是前者

或者使用@Component的自定义注解:我们可以自定义注解,用@Component去注解我们的自定义注解,那么我们的自定义注解也可以被用于注解类,这样也能被Spring容器自动发现

type类型有以下几种:

1.service会有一个属性name,用service去注解这个类SimpleMovieLister的时候,可以去显示的指定这个类在注册到bean容器中或者叫IOC容器中,它所对应的id也就是它的名称相当于xml配置文件中的id,如果我们显示指定了,如果我们显示指定了,那么就会用我们显示指定的名称。

2.没有显示指定它的id或名称是什么,它就会根据BeanNameGenerator来自动生成它的id,通常的生成规则是以类名为基础,并把类名的第一个字母小写作为字符串的id

3.自定义bean命名策略

怎么使用自定义bean命名策略的实现类?

name-generator去指定我们自己的命名策略实现

Spring Bean装配之Bean的定义及作用域的注解实现

如何使用自定义的scope策略?

scope-resolver去指定我们自己的实现类,基于这种方式的去扫描的所有类,它的scope都是由我们自定义的scope策略去实现的

用到什么样的标签可以去参考下spring的官方文档,里面会有相关的说明

@Required不常用的注解

@Autowired字面理解自动的去进行装配

Autowired相比于Required,它的用途范围更广,既可以用在set方法上,也可以用在成员变量或者构造器上,常用的注解

众所周知的解析依赖性接口:Spring自己的解析依赖性接口,主要是解析Spring的xml文件或者是解析注解等等。

我们可以在当前类里面去声明对ApplicationContext的引用,然后使用@Autowired注解,这个时候我们就可以在当前类中得到IOC的上下文信息,然后使用这个上下文信息

数组:是set或者list

所有特定类型的bean:当set中设置MovieCatalog这种类型的时候,当前的ApplicationContext中,所有是set泛型中声明类型的这种bean或者是它的子类,都可以被Autowired注解,然后把这些bean的实例放到当前的集合movieCatalogs当中去,当然也可以用于Map

key:所有的bean的id

value:bean的对象

例子

1.用在成员变量的时候

@Qualifier("main")

如果有多个MovieCatalog的时候,我们可以通过Qualifier来指定使用main,也就是bean id为main的这个MovieCatalog实现类或者是子类

2.用在方法参数中

用MovieCatalog对应的bean id为main的这个bean的实例

通过什么方式定义自己的qualifier注解?

1.定义自己的注解的时候用qualifier来注解我们自定义的注解,那么我们定义的注解就具备了qualifier注解的相应功能。

2.使用xml配置文件的方式

@Qualifier注解能够缩小范围,指定到具体的bean

@component注解可以用在任何注解类上面

两种方式的效果都是一样的,都会向SpringIoc容器中添加一个对象,左边的方式是使用编码加注解的方式,右边是使用基于xml的配置方式

@Bean(name="myFoo")

自己指定bean的name

如果使用@Bean注解,在没有指定name的情况下,那么这个bean的name是方法的名称

如何使用@ImportResource和@Value注解进行资源文件读取

使用配置文件的方式

使用注解的方式

从资源文件中去加载资源文件的配置并应用到bean的创建中

如何创建DriverManagerDataSource的bean对象?

用@value这个注解从资源文件中取出它的key,赋值给当前类的成员变量

再使用@Bean这个注解去创建DriverManagerDataSource,同时把url,username,password传入DriverManagerDataSource构造器

例子

这里所得到的hashCode对应这个bean即stringStore所在类的hashCode

这里所得到的hashCode是对象的hashCode

如果没有指定Resource的name,那么默认就是根据setter方法去得出,如果@Resource注解是在成员变量上,那就是根据成员变量的名称得出

这里ApplicationContext可以理解为IOC容器

当同一种类型的bean在IOC容器中有多个的时候,想使用特定的那个bean,这个时候就可以使用@named注解

@named的两种使用方式

1.@named与@Component是等效的,也可以用来注解在类上,如以上代码所示

2.@named用来指定某一个名称的bean,如以下代码所示

最新文章

  1. Linux线程体传递参数的方法详解
  2. Lua查找表元素过程(元表、__index方法是如何工作的)
  3. Oracle表字段的增加、删除、修改和重命名
  4. php一句话后门过狗姿势万千之传输层加工(1)
  5. Java 获取距离最近一段时间的时间点
  6. MJPhotoBrowser 两个bug:回到小图模式时会闪动&amp;大图太靠近底部
  7. PHP 防范IP攻击
  8. magento install
  9. UVA 11802 All Your Bases Belong to Us
  10. Lucene.Net 2.3.1开发介绍 —— 三、索引(二)
  11. 基于 HTML5 的 WebGL 3D 版俄罗斯方块
  12. ElasticSearch 5.0.0 安装部署常见错误或问题
  13. [配置]给Myeclipse配置Tomcat
  14. php7注意事项
  15. Oracle命令(二):Oracle数据库几种启动和关闭方式
  16. Python中通过open()操作文件时的文件中文名乱码问题
  17. 原生js模仿jq fadeIn fadeOut效果 兼容IE低版本
  18. 书写可维护的javascript
  19. redux详解
  20. Spark BlockManager 概述

热门文章

  1. 解决Maven依赖本地仓库eclipse报错的问题
  2. opencv轮廓外接矩形
  3. mysql数据恢复,binlog详解
  4. linux中LVM介绍及实验过程
  5. double check
  6. 【BFS】Help the Princess!
  7. 数据校验-hibernate-validator
  8. 媲美pandas的数据分析工具包Datatable
  9. vue兄弟组件的传值eventbus
  10. 一个SAP开发人员的养蚕流水帐