1       bean配置与装配

1.1      bean在XML文件中进行显示配置并装配

1.2      bean在JavaConfig中显示配置并装配

1.2.1  优点:类型是安全的,编译期可检查。(相对于xml配置而言,编辑时不能校验)

1.2.2  通过java代码创建bean:略,使用@bean注解

1.2.3  通过java代码装配bean:略

1.3      bean自动扫描和自动装配

1.3.1  自动组件扫描(component scanning)

1.3.1.1 组件扫描默认是不启用的

1.3.1.2 组件扫描启用方法:

1.3.1.2.1 在XML配置文件中:

<?xml version="1.0" encoding="UTF-8">

<beans>

<context:component-scan base-package="xxx"/>

</beans>

1.3.1.2.2 在javaConfig类中使用@ComponentScan注解

1.3.1.2.2.1   默认会扫描与配置类相同的包。

1.3.1.2.2.2   好处是:不会因为使用注解而污染代码

1.3.1.2.2.3   扫描其他包的方法:@ComponentScan(basePackages=”org.apache.xxx“)

1.3.1.2.2.4   扫描多个包的方法:@ComponentScan(basePackages={"xx","yy"})

1.3.1.2.2.5   扫描指定的类:       @ComponentScan(ClassA.class,ClassB.class})

1.3.1.3 定义组件使用 Spring的@Component注解

1.3.1.4 组件bean命名

1.3.1.4.1 默认ID为类名,并将第一个字母变为小写

1.3.1.4.2 手动设置@Component("xx")

1.3.1.4.3 使用Java注解@Name(“XX“)

1.3.2  自动装配(autowiring)

1.3.2.1 使用Spring的@Autowired注解进行装配

1.3.2.2 ,或者java注解@Inject注解进行装配

1.3.2.3 通过JavaConfig进行装配

1.3.2.4 @Component  @Inject可以用在构造器上、Setter方法上、普通方法、属性(可以是Private)上

1.3.2.5 自动装配的前提是,本事是一个bean,该bean内部的某些构造函数、属性、方法参数需要自动装配

1.3.2.6 如果自动装配时,没有找到对应的bean,则自动抛出异常,或者@Autowired(required=false)

1.3.2.7 如果自动装配时,找到多个bean,则自动抛出异常

1.4      通过XML定义并装配bean

1.4.1  定义一个简单的bean

1.4.1.1 自动生成ID

<bean class=”org.apache.xxx”>

此时bean的ID为”org.apache.xxx#0”

1.4.1.2 手动指定ID

<bean id=”xxx” class=”org.apache.xxx”>

1.4.2  使用构造器装配

<bean id=”xx” class=”org.apache.yyy”>

<constructor-arg ref=”yyy” />

<constructor-arg value=”stringValue”/>

<constructor-arg><null/></constructor-arg>

<constructor-arg>

<list>

<value>aaa</value>

<value>bbb</value>

</list>

</constructor-arg>

<constructor-arg>

<list>

<ref bean=”id1”/>

<ref bean=”id2”/>

</list>

</constructor-arg>

<constructor-arg>

<set>

<ref bean=”id1”/>

<ref bean=”id2”/>

</set>

</constructor-arg>

</bean>

1.4.3  使用属性装配

<bean id=”xxx” class=”org.apache.xxx”>

<property name=”age” value=”15”/>

<property name=”person” ref=”person_bean_id”/>

<property name=”personList”>

<list>

<value>str1</value>

<value>str2</value>

</list>

</property>

</bean>

1.5      混合装配

1.5.1  在JavaConfig中引用xml配置

@Configuration

@Import(OtherJavaConfig.class)

@ImportResource(“classpath:xxx.xml”)

1.5.2  在xml配置中引用JavaConfig

<beans>

<import resource=”xxx.xml”/>

<bean class=”OtherJavaConfig”/>

注:JavaConfig引入到xml配置文件中,方法只是相当于创建一个普通的bean

</beans>

Spring 梳理-bean配置与装配的更多相关文章

  1. 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比

    [原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...

  2. spring中bean配置和bean注入

    1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...

  3. spring中bean配置和注入场景分析

    bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...

  4. 关于spring中bean配置的几件小事

    一.IOC和DI 1.IOC(Inversion of Control) 其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源:而应用了IOC之后 ...

  5. Spring的Bean配置

    IOC和DI 网上概念很多,感兴趣可以去搜一搜,在这里我就给个比喻: IOC:以前我们买东西都要去商店买,用了IOC之后,我们只要在门口放个箱子, Spring就会给我相应商品,ಠᴗಠ 举个例子 cl ...

  6. 使用@Configuration注解来代替Spring的bean配置

    下面是一个典型的Spring配置文件(application-config.xml): <beans> <bean id="orderService" class ...

  7. spring对bean的高级装配之profile机制

    最近在读spring实战一书,个人感觉内容通俗易懂,学到了一些之前并不知道的知识,于是打算在博客里记录一下这些知识点便于后期记忆: 今天要记录的就是spring的条件化创建bean,针对条件化创建be ...

  8. Spring 梳理-bean作用域

    Spring定义了多种域 单例(Singleton):在整个应用中,只有一个实例 原型(Prototype):每次注入或者通过Spring应用上线文获取时,都创建一个bean实例 会话(Session ...

  9. spring对bean的高级装配之基于@Conditional条件化装配

    上篇介绍了如何基于profile来条件化创建bean,spring会根据profile的激活状态来进行创建;这篇介绍如何基于spring4.0引入的@Conditional和Condition接口来更 ...

随机推荐

  1. lua_lua与.Net互相调用

    配置环境:创建C#项目,引入luainterface-1.5.3\Built下面的LuaInterface.dll文件和luanet.dll文件.引入命名空间using LuaInterface 代码 ...

  2. JS函数提升和变量提升

    1.1什么是函数提升和变量的提升? JS引擎在运行整个JS代码的过程中,分为俩步. 第一步是读取和解析JS代码,第二部是执行. 在引擎解析JS代码的时候,当解析器遇见变量声明(var 变量名)和函数声 ...

  3. Python数据类型详解——列表

    Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...

  4. asio kcp源码分析

    asio kcp代码走读 (1)kcp_client_wrap类 a 提供方法接口如下: send_msg kcp_client_.send_msg(msg); stop //等待工作线程退出 set ...

  5. vue.js如何根据后台返回来的图片url进行图片下载

    最近在做一个前端vue.js对接的功能模块时,需要实现一个下载图片的功能,后台返回来的是一串图片url,试了很多种方法,发现点击下载时出来的效果都是跳着到一个新的图片网页,后来经过一番琢磨,终于解决了 ...

  6. SDU暑期集训排位(8)

    A. A Giveaway 签到 B. Game of XOR 做法 dp[G][L][R]表示在倒数第G代,左边的数是L,右边的数是R,下面共有多少个0和1 区间和转换成两次前缀和和一次单点查询 利 ...

  7. Codeforces Round #503 (by SIS, Div. 2) D. The hat -交互题,二分

    cf1020D 题意: 交互题目,在有限的询问中找到一个x,使得数列中的第x位和第(x+n/2)位的值大小相同.数列保证相邻的两个差值为1或-1: 思路: 构造函数f(x) = a[x] - a[x ...

  8. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

  9. JS-特效 ~ 03. 楼层跳跃、事件对象event的获取与使用、event的主要内容、screenX、pageX、clientX的区别、放大镜、模拟滚动条

    楼层跳跃 100%子盒子会继承父盒子的宽高.父盒子继承body宽高.Body继承html的宽高. 盒子属性:auto:适应盒子自身的宽度或者高度.(对自己负责) 盒子属性:100%:适应盒子父盒子的宽 ...

  10. vue.js安装教程

    vue.js环境搭建 1.下载node.js 网址:https://nodejs.org/en/ 版本:v10.16.3 2.安装node.js Node.js下载如下所示: 检查nodejs是否安装 ...