Spring之装配Bean(一)
Spring中装配bean的三种主要方式
1.隐式的bean发现机制和自动化装配
组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean。
自动装配( autowiring) : Spring自动满足bean之间的依赖。
通过@Component注入bean
import org.springframework.stereotype.Component;
@Component
public class SgtPeppers implements CompactDisc {private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles";public void play() {System.out.println("Playing " + title + " by " + artist);}
}
通过@Autowire构造器注入或set方法注入
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CDPlayer implements MediaPlayer {private CompactDisc cd;@Autowiredpublic CDPlayer(CompactDisc cd) {this.cd = cd;}public void play() {cd.play();}
}
通过@ComnentScan注解启用组件扫描,扫描类所在包以下,@Configuration声明配置类
@Configuration
@Component
public class CDPlayerConfig{}
或者直接通过xml配置启用组件扫描,扫描指定包以下
<context:conponent-scan base-package="soundststem">
这样,spring容器自动从指定包下装载含有@component的类和实例成员属性。
2.基于Java的显式配置
在进行显式配置时, JavaConfig是更好的方案,因为它更为强大、 类型安全并且对重构友好。 因为它就是Java代码,就像应用程序中的其他Java代码一样。尽管不是必须的, 但通常会将JavaConfig放到单独的包中, 使它与其他的应用程序逻辑分离开来。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CDPlayerConfig {@Beanpublic CompactDisc compactDisc() {return new SgtPeppers();}@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {return new CDPlayer(compactDisc);}
}
创建JavaConfig类的关键在于为其添加@Configuration注解, @Configuration注解表明这个类是一个配置类, 该类应该包含在Spring应用上下文中如何创建bean的细节。要在JavaConfig中声明bean, 我们需要编写一个方法, 这个方法会创建所需类型的实例, 然后给这个方法添加@Bean注解。@Bean注解会告诉Spring这个方法将会返回一个对象, 该对象要注册为Spring应用上下文中的bean。 方法体中包含了最终产生bean实例的逻辑。
借助JavaConfig实现注入
构造方法:
@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {return new CDPlayer(compactDisc);}
setter方法:
@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {CDPlayer cdPlayer = new CDPlayer(compactDisc);cdPlayer.setCompactDisc(compactDisc);return new cdPlayer;}
3、基于XML的显式配置
在使用XML为Spring装配bean之前, 你需要创建一个新的配置规范。在使用JavaConfig的时候, 这意味着要创建一个带有@Configuration注解的类, 而在XML配置中, 这意味着要创建一个XML文件, 并且要以元素为根。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:c="http://www.springframework.org/schema/c"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
声明一个bean
<bean id="compactDisc" class="soundsystem.BlankDisc">
构造器注入方式配置
<bean id="cdPlayer" class="soundsystem.CDPlayer"><constructor-arg ref="compactDisc" /></bean>
setter属性方式注入
<bean id="cdPlayer" class="soundsystem.properties.CDPlayer"><property name="compactDisc" ref="compactDisc" /></bean>
以上这些配置方案都不是互斥的,我们可能会同时使用自动化和显式配置,根据自身的需求进行选择即可。
Spring之装配Bean(一)相关推荐
- spring(2)装配Bean
[0]README 0)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review spring(2)装配Bean 的相关知识: 1)在sprin ...
- spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class); SpringCon ...
- spring二:装配bean(自动装配)
创建应用对象之间协作关系的行为通常称为装配(wiring),这就是依赖注入(DI)的本质. Spring提供了三种主要的装配机制: 1. 在xml中进行显式配置. 2. 在java中进行显式配置. ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- Spring自动装配Bean
除了使用 XML 和 Annotation 的方式装配 Bean 以外,还有一种常用的装配方式--自动装配.自动装配就是指 Spring 容器可以自动装配(autowire)相互协作的 Bean 之间 ...
- Spring基础—装配bean(一)
在讲解Spring配置beans之前首先想一下一部成功的电影都需要哪些成员参与.首先,最重要的是要有导演.编剧.演员和投资人:其次,还有没那么明显的成员,音乐人.特技演员和艺术指导:此外,还有其他很重 ...
- Spring笔记——装配Bean
1.Spring配置的可选方案 在XML中进行显式配置. Java中进行显式配置. 隐式的bean发现机制和自动装配. 2.自动化装配bean Spring从两个角度来实现自动化装配: 组件扫描(co ...
- Spring 自动化装配Bean
声明一张cd的接口: public interface CompactDisc {public abstract void play(); } 实现cd接口: @Component("Sgt ...
- spring自动装配Bean的五种方式
no:默认方式,手动装配方式,需要通过ref设定bean的依赖关系 byName:根据bean的名字进行装配,当一个bean的名称和其他bean的属性一致,则自动装配 byType:根据bean的类型 ...
最新文章
- 神经网络设计与分析之sin函数拟合分析
- 在 mac OS 中安装 xgboost python 包
- stm32 systick定时器
- 1.7 Java try catch finally语句
- Linux基础第一章 概述
- 近期低分纯生信友好的期刊简介
- 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。 它们在电文中出现的频度分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}。【MOOC答案】
- 光遇服务器维护都在干什么,光遇:全图毕业后该做什么?老玩家建议,这四件事不做会后悔...
- leetcode 46. 全排列 思考分析
- 输出奇数和偶数(Java)
- telnet怎么算成功_有机肥发酵剂有的作用,怎么才算发酵成功?
- JAVA使用bean配置ftp_FTP文件上传(By)java
- 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)
- stm32for循环几个机械周期_带你了解包装机械设备的可调度性分析
- doc和docx、xls和xlsx、ppt和pptx有什么区别?
- 2021 年百度之星·程序设计大赛 - 初赛一、二
- 2019最新好听DJ舞曲精选(51-70)【WAV/百度】
- 联想微型计算机m8000u配置,联想的产品介绍-20210412075714.pdf-原创力文档
- Linux7网卡绑定后mac一样,如何解决双网卡bond0绑定模式物理成员口的mac地址和bonding接口mac地址不一致......
- 【嵌入式09】STM32串口通信,发送Hello Windows示例