type
status
date
slug
summary
tags
category
icon
password
1.Autowired
自动装配:底层其实就是getBean
自动装配流程(先按照类型,再按照名称)
1.按照类型,找到这个组件
1.0 只有且找到一个,直接注入,名称无所谓
1.1 如果找到多个,再按照名称去找,变量名就是名称
1.1.1如果找到 直接注入
1.1.2 如果找不到,报错
2.Qualifier和Primary
Qualifier:如果容器中这样的组件有多个,精确指定
Primary:如果容器中有这样的组件有多个,指定主要的
3.Resource
适用于需要明确指定名称进行注入的情况,或者在Java标准库中使用
面试题:Autowired、Qualifier和Resource区别

4.构造器注入和setter注入
4.1 构造器注入
构造器注入不需要注解
原理:Spring 自动去容器中找到有参构造器需要的所有参数的组件值。
4.2setter注入
属性setter方法注入是Spring最主流的注入方法,这种注入方法简单、直观,它是在被注入的类中声明一个setter方法,通过setter方法的参数注入对应的值。
5.xxxAware感知接口
Aware(感知)接口是Spring留给Bean的特殊通道。当Bean实现了某个Aware子接口,就相当于举起了手说:"我需要知道XXX信息"。Spring容器会在合适的时机,通过这个接口把Bean需要的资源"递"到它手中。
常见Aware接口:
BeanNameAware
:感知自己的Bean名称(工牌编号)
BeanFactoryAware
:感知创建自己的工厂(咖啡机操作手册)
ApplicationContextAware
:感知整个容器(店铺平面图)
EnvironmentAware
:感知环境变量(店铺温湿度)
6.Value属性赋值
加在组件的属性上方
6.1.直接赋值
6.2.从配置文件xxx.properties获取值
6.3.进行计算赋值
6.4.调用方法赋值
6.5.静态调用类赋值
7.PropertySource
说明属性来源:把指定的文件导入容器中,供我们取值使用
写在类上,注明@Value取值的文件
classpath:从项目路径下找
classpath*:从所有包路径下找
8.Profile
在指定环境下加载组件;在类或者方法上标注
Rrofile是什么以及为什么要用它1.Spring中的Profile 是什么 Spring中的Profile功能其实早在Spring 3.1的版本就已经出来,它可以理解为我们在Spring容器中所定义的Bean的逻辑组名称,只有当这些Profile被激活的时候,才会将Profile中所对应的Bean注册到Spring容器中。举个更具体的例子,我们以前所定义的Bean,当Spring容器一启动的时候,就会一股脑的全部加载这些信息完成对Bean的创建;而使用了Profile之后,它会将Bean的定义进行更细粒度的划分,将这些定义的Bean划分为几个不同的组,当Spring容器加载配置信息的时候,首先查找激活的Profile,然后只会去加载被激活的组中所定义的Bean信息,而不被激活的Profile中所定义的Bean定义信息是不会加载用于创建Bean的。2.为什么要使用Profile 由于我们平时在开发中,通常会出现在开发的时候使用一个开发数据库,测试的时候使用一个测试的数据库,而实际部署的时候需要一个数据库。以前的做法是将这些信息写在一个配置文件中,当我把代码部署到测试的环境中,将配置文件改成测试环境;当测试完成,项目需要部署到现网了,又要将配置信息改成现网的,真的好烦。而使用了Profile之后,我们就可以分别定义3个配置文件,一个用于开发、一个用户测试、一个用户生产,其分别对应于3个Profile。当在实际运行的时候,只需给定一个参数来激活对应的Profile即可,那么容器就会只加载激活后的配置文件,这样就可以大大省去我们修改配置信息而带来的烦恼。
- Author:Blinky
- URL:http://preview.tangly1024.com/article/1cb1c0db-37a0-809e-9f33-e2e01640c7c6
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!