装配bean
spring有三种装配bean的方式:隐式装配、java代码装配、xml装配
隐式装配最为省事方便,也称为自动化装配
这三种装配方式可以混搭着来用
在这里通过一个例子来讲述配置
CD的两个实现,一个是ThinkingJAVA,一个是LinuxBird
注解配置
定义bean
@Component
public class ThinkingJAVA{
public void play(){
System.out.println("java思想");
}
}
在这里ThinkingJAVA被Component标识成一个bean,bean的id自动为thinkingJAVA
@Component
public class CDPlayer {
@Autowired(required=true)
public CD cd;
public void play(){
cd.play();
}
}
cdPlayer中有一个自动cd,被标识为自动装配,且一定会装配,如果容器中不存在CD类型的bean,那么就会报错,如果required=false,则表示可装配时装配,如果没有的装配则不会去装配
隐式装配
隐式装配既自动扫包
通过java代码开启自动扫包
@Configuration
//扫描当前类的包及其自包
//@ConponentScan()
//扫描string指定包及其子包
//不推荐这种方式,不利于代码重构,也不好检查错误
//@ConponenetScan(basePackages="soundsystem")
//扫描指定class所在的包及其子包
//推荐这种方式,利于代码重构
//可以设置一个空接口用来标识基础包
//表示扫描CD类和CDPlayer所在的包及其子包
@ConponentScan(basePackageClasses={CD.class,CDPlayer.class})
public class CDPlayerConfig {
}
最好把配置的类单独放在配置包,不要跟业务逻辑搅在一起
xml开启自动扫包
<context:component-scan base-package="要扫描的包及其子包"></context:component-scan>
在xml文件中加上这么一句
java代码装配
@Configuration
public class CDPlayerConfig {
//指定bean
@Bean
public ThinkingJAVA thingkingJAVA(){
return new ThinkingJAVA();
}
@Bean
public CDPlayer cDPlayer(){
return new CDPlayer();
}
}
bean的id就是方法名
可以用java代码来构造出实例,所以很强大,有很多种可能性
混搭装配
java代码装配和xml装配可以整合起来
将两个java装配类合为一个
将他们合为一个SoundsystemConfig.class
@Configuration
@Import(CDConfig.class,CDPlayer.class)
//如果要整合xml
//@ImportResource("classpath:cdconfig.xml")
public class SoundsystemConfig {
}
装配bean的更多相关文章
- [spring]03_装配Bean
3.1 JavaBean 3.1.1 JavaBean 是什么 JavaBean 是一种JAVA语言写成的可重用组件. 为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器. Jav ...
- Spring学习系列(三) 通过Java代码装配Bean
上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...
- IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注解 ...
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring IOC装配Bean(注解方式)
1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- 自动装配Bean
Spring提供了几种技巧,可以减少XML的配置数量: 自动装配(autowiring):可以减少<property>(setter注入)和<constructor-arg>( ...
- Spring3系列8- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
随机推荐
- Oracle 超长字符串分割劈分
Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...
- salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样. 以Goods__c表为例,申请者申请的一些采购以前需要 ...
- Chart.js中文文档-雷达图
雷达图或蛛网图(Radar chart) 简介 A radar chart is a way of showing multiple data points and the variation bet ...
- C语言的标准输入输出
1. 标准输入输出 标准输入.输出主要由缓冲区和操作方法两部分组.缓冲区实际上可以看做内存中的字符串数组,而操作方法主要是指printf.scanf.puts.gets,getcha.putcahr等 ...
- 对Big Table进行全表更新,导致 Replication 同步数据的过程十分缓慢
在Publisher database中更新一个big table,数据行数是3.4亿多.由于没有更新 clustered Index key,因此,只产生了3.4亿多个Update Commands ...
- UGUI 之Scroll Rect 坑
由于UGUI没有提供类似Scroll View类似的控件,但提供了ScrollRect主机.可以自定义Scroll View 同时提供了Mask组件来遮罩超出Scroll Rect对象的范围, 之所以 ...
- lua解释执行脚本流程
#include "lua.hpp" #include <iostream> using namespace std; #pragma comment(lib, &qu ...
- 斐讯Fir302b救砖教程
首先本人是路由器小白,不算是硬件改装高手,昨天收到了微信活动中的斐讯Fir302b,大概当时得奖的有300人,所以最近肯定很大一批朋友手里有这样的一款路由. 上网查了一下,此款路由可以刷基于tomat ...
- javascript运动系列第六篇——轨迹和投掷
× 目录 [1]运动轨迹 [2]拖拽轨迹 [3]投掷 前面的话 一般地,不同的运动形式会产生不同的轨迹.但仅凭肉眼去识别运动轨迹,其实并不是很直观.因此,在页面中显示运动轨迹,是一个重要的问题.物体初 ...
- SQL Server 存储过程生成insert语句
你肯定有过这样的烦恼,同样的表,不同的数据库,加入你不能执行select insert 那么你肯定需要一条这样的存储过程,之需要传入表明,就会给你生成数据的插入语句. 当然数据表数量太大,你将最好用 ...