Spring 梳理-bean配置与装配
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配置与装配的更多相关文章
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
- spring中bean配置和bean注入
1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...
- spring中bean配置和注入场景分析
bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...
- 关于spring中bean配置的几件小事
一.IOC和DI 1.IOC(Inversion of Control) 其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源:而应用了IOC之后 ...
- Spring的Bean配置
IOC和DI 网上概念很多,感兴趣可以去搜一搜,在这里我就给个比喻: IOC:以前我们买东西都要去商店买,用了IOC之后,我们只要在门口放个箱子, Spring就会给我相应商品,ಠᴗಠ 举个例子 cl ...
- 使用@Configuration注解来代替Spring的bean配置
下面是一个典型的Spring配置文件(application-config.xml): <beans> <bean id="orderService" class ...
- spring对bean的高级装配之profile机制
最近在读spring实战一书,个人感觉内容通俗易懂,学到了一些之前并不知道的知识,于是打算在博客里记录一下这些知识点便于后期记忆: 今天要记录的就是spring的条件化创建bean,针对条件化创建be ...
- Spring 梳理-bean作用域
Spring定义了多种域 单例(Singleton):在整个应用中,只有一个实例 原型(Prototype):每次注入或者通过Spring应用上线文获取时,都创建一个bean实例 会话(Session ...
- spring对bean的高级装配之基于@Conditional条件化装配
上篇介绍了如何基于profile来条件化创建bean,spring会根据profile的激活状态来进行创建;这篇介绍如何基于spring4.0引入的@Conditional和Condition接口来更 ...
随机推荐
- 设计模式(C#)——08组合模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 游戏通常包含许多视图.主视图中显示角色.有一个子视图,显示玩家的积分.有一个子视图,显示游戏中剩下的时间. ...
- Java生成二维码(Java程序都可以使用)
工具类,链接:https://pan.baidu.com/s/18U399fTH5wBJPnL97pAekg 提取码:bmw7 注:里面的corejar包是使用的zxing的代码,我只是将其导出的ja ...
- Asp.net MVC 集成AD域认证
1.首先WebApi 应用下Web.config要配置域认证服务器节点,如下 <!--LDAP地址 用于项目AD系统账号密码验证--> <!--0:关闭域认证:1:开启域认证--&g ...
- CodeForces 55D Beautiful numbers(数位dp+数学)
题目链接:http://codeforces.com/problemset/problem/55/D 题意:一个美丽数就是可以被它的每一位的数字整除的数. 给定一个区间,求美丽数的个数. 显然这是一道 ...
- 计蒜客-第五场初赛-第二题 UCloud 的安全秘钥(简单)
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方 ...
- hud 1633 Orchard Trees 点是否在三角形内模板 *
Orchard Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 微信公众号之获取openId
在小伙伴们开发微信公众号.小程序或者是在微信内置浏览器打开的项目时,会遇到的第一个问题就是如何获取openId,今天小编就给大家带来的是如何获取openId. 首先 我们要从微信开发者后台得到ap ...
- Word 远程调用失败:异常来自 HRESULT:0x800706BE
之前服务器上一直运行正常的,这几天突然报错 “远程过程调用失败. (异常来自 HRESULT:0x800706BE) ” 解决方案:组件服务—我的电脑—属性—COM安全—编辑默认值 添加各种用户权限 ...
- 小白专场-多项式乘法与加法运算-python语言实现
目录 题意理解 解题思路 多项式加法 多项式乘法 完整代码 题意理解 题目: 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一 ...
- .net core 自定义404 500页面
常用处理方式 自己定制网站的404.500页面的方式有很多,比如修改nginx配置文件,指定请求返回码对应的页面, .netframework项目中修改webconfig文件,指定customerro ...