1.组建扫描

在类上添加注解@Component注解可以实现组建扫描

@Component
public class A{
...
}

2.自动装配

通过在属性上或者方法上添加@Autowired注解可以实现自动装配(在单例bean,没有歧义的情况下)

public class B{
@Autowired
private A a;
... } public class B{
   @Autowired
   public B(A a){
...
}
... }

3.通过java代码实现显示装配

当使用第三方库时,无法实现自动装配,所以需要显示装配bean。在配置类中添加@Configuration注解,在方法上添加@Bean注解实现创建bean。

装配方式一:
@Configuration
public classs C{
@Bean
public A getA(){
return new A();
} @Bean
public B setA(){
return new B(getA());
}
} 装配方式二:
@Configuration
public classs C{
@Bean
public A getA(){
return new A();
} @Bean
public B setA(A a){
return new B(a);
}
}

4、自动装配与歧义性

spring的默认模式是单例模式,只有单例模式时,才可以实现自动装配。为了处理歧义性,有以下几种方式:

假设有以下多个bean

@Compant
public class Icecream extend Dessert{...}
@Compant
public class Cookie extend Dessert{...}
@Compant
public class Cake extend Dessert{...}

(1)标识首选Bean

利用@Primary注解

@Component
@Primary
public class Icecream extends Dessert{...}

(2)使用限定符表示不同的bean

@Autowired
@Qualifier("icecream")//这里使用Icecream类,它的bean的名字默认为类的名字首字母小写,即“icecream”
private Dessert dessert;

如果要使用自定义的bean的限定符:

定义:
@Component
@Qualifier("cold")
public class Icecream extends Dessert{...} 使用:
@Autowired
@Qualifier("cold")
private Dessert dessert;

5、bean的作用域

包含四种模式:

(1)单例模式:整个应用程序,只建立一个实例bean

(2)原型模式:每次注入或者通过spring上下文获取的时候,就建立一个实例bean

(3)会话模式:每个会话建立一个实例bean

(4)请求模式:每次请求建立一个实例bean

spring默认情况下,是单例模式,如果要用其他模式,可以用@Scope注解,并且配合@Component和@Bean使用。

@Component
@Scope("prototype")
public class A{
...
} @Bean
@Scope("prototype")
public A getA(){
...
}

spring自动装配和通过java实现装配的更多相关文章

  1. Spring学习系列(三) 通过Java代码装配Bean

    上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...

  2. 第2章—装配Bean—通过java代码装配bean

    通过java代码装配bean ​ 在进行显式装配的时候,有两种选型方案:java和XML配置,这里先介绍java的配置方式. 2.3.1创建配置类 先复习下上一章的配置内容: @Configurati ...

  3. Spring装配Bean之Java代码装配bean

    尽管通过组件扫描和自动装配实现Spring的自动化配置很方便也推荐,但是有时候自动配置的方式实现不了,就需要明确显示的配置Spring.比如说,想要将第三方库中的组件装配到自己的应用中,这样的情况下, ...

  4. Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  5. Spring 自动装配及自动注册的相关配置

    Spring支持好几种自动装配(Autowiring)的方式,以及自动扫描并注册Bean的配置(在beans.xml中配置). 下文我们进行一个小结. 1. <context: annotati ...

  6. Spring 通过Java代码装配bean

    1. 背景 书接上文Spring自动化装配bean 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化扫描配置是更为推荐的方式,但在有些情况下自动化扫描的方案行不通,如想要将第三方库中的组 ...

  7. Spring自动装配Bean详解

    1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wirin ...

  8. Spring 之通过 Java 代码装配 bean

    [关于IoC的几点认识] 1.面向接口编程 --> 每层只向上层提供接口 2.inversion of control (IoC)  -->参考百度百科 3.DI是IoC的一种实现方式 [ ...

  9. Spring 自动注册及自动装配

    Spring支持三种注册Bean及装配Bean的方式: 显式地在Java代码中注册及装配 显示地在Xml文件中注册及装配 隐式地装配,即自动注册及装配 这三种方式可以混合使用.选择哪种更多地是看个人品 ...

随机推荐

  1. Interger对象不要用==进行比较

    为了更好的空间和时间性能,Integer会缓存频繁使用的数值,数值范围为-128到127,在此范围内直接返回缓存值. IntegerCache.low 是-128,IntegerCache.high是

  2. Fabric智能合约(base)

    这里的智能合约仅包含Init函数和Invoke函数. 为什么一定是这两个方法? 因为在源码中的智能合约模块有这样的接口,如果要完成智能合约的相关编程,就需要实现源码中定义的接口,接口中定义了这两个方法 ...

  3. C# 调用APlayer教程

    APlayer介绍 引擎介绍: APlayer 媒体播放引擎是迅雷公司从 年开始开发的通用音视频媒体文件播放内核. 迅雷看看播放器和迅雷影音就是使用 APlayer 作为播放内核,目前迅雷看看播放器在 ...

  4. python全栈学习 day03

    换行符: \n 制表符: \t 字符串截取:顾头不顾尾 s[首:尾:步长] 首--->尾走向 和 步长方向一致 s[0:4:2] s[4:0:-2] a = "qwertyui&quo ...

  5. 你是个好人,但不是个好leader

    午餐时间,我翻看朋友圈,浏览到一条朋友A的最新动态,她刚创业半年多的公司因为资金周转不灵.项目搁浅.合伙人撤资等多方面原因,最终倒闭了. 朋友A有着多年的名企工作经验,985大学毕业,在学校时是学霸, ...

  6. [PAT] A1018 Public Bike Management

    [思路] 题目生词 figure n. 数字 v. 认为,认定:计算:是……重要部分 The stations are represented by vertices and the roads co ...

  7. Android_SharedPreferences实现的自动登录和记住密码

    效果: 先贴一个SharedPreferences工具类: package com.example.didida_corder.ToolClass; import android.content.Co ...

  8. 精心收集java基础106条

    Java基础 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 一个Java源文件中可以定义多个类,但最多只能定义一个public的类,并且public ...

  9. 刷题22. Generate Parentheses

    一.题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号. 简单考虑了一下,n=0,输出"";n=1,输出" ...

  10. 用Java在excel单元格中设置超链接

    (一)问题引入 有时候我们在导入数据到excel中时可能要给某个文件或图片设置超链接,例如链接到外网或者是本地的某个目录.我们可以通过Java代码来实现,借助POI库. (二)解决方案 下面直接给出参 ...