javascript
Spring之装配Bean(一)
Spring中裝配bean的三種主要方式
1.隱式的bean發(fā)現(xiàn)機(jī)制和自動(dòng)化裝配
組件掃描( component scanning) : Spring會(huì)自動(dòng)發(fā)現(xiàn)應(yīng)用上下文中所創(chuàng)建的bean。
自動(dòng)裝配( autowiring) : Spring自動(dòng)滿足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構(gòu)造器注入或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容器自動(dòng)從指定包下裝載含有@component的類和實(shí)例成員屬性。
2.基于Java的顯式配置
在進(jìn)行顯式配置時(shí), JavaConfig是更好的方案,因?yàn)樗鼮閺?qiáng)大、 類型安全并且對(duì)重構(gòu)友好。 因?yàn)樗褪荍ava代碼,就像應(yīng)用程序中的其他Java代碼一樣。盡管不是必須的, 但通常會(huì)將JavaConfig放到單獨(dú)的包中, 使它與其他的應(yīng)用程序邏輯分離開來。
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);} }創(chuàng)建JavaConfig類的關(guān)鍵在于為其添加@Configuration注解, @Configuration注解表明這個(gè)類是一個(gè)配置類, 該類應(yīng)該包含在Spring應(yīng)用上下文中如何創(chuàng)建bean的細(xì)節(jié)。要在JavaConfig中聲明bean, 我們需要編寫一個(gè)方法, 這個(gè)方法會(huì)創(chuàng)建所需類型的實(shí)例, 然后給這個(gè)方法添加@Bean注解。@Bean注解會(huì)告訴Spring這個(gè)方法將會(huì)返回一個(gè)對(duì)象, 該對(duì)象要注冊(cè)為Spring應(yīng)用上下文中的bean。 方法體中包含了最終產(chǎn)生bean實(shí)例的邏輯。
借助JavaConfig實(shí)現(xiàn)注入
構(gòu)造方法:
setter方法:
@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {CDPlayer cdPlayer = new CDPlayer(compactDisc);cdPlayer.setCompactDisc(compactDisc);return new cdPlayer;}3、基于XML的顯式配置
在使用XML為Spring裝配bean之前, 你需要?jiǎng)?chuàng)建一個(gè)新的配置規(guī)范。在使用JavaConfig的時(shí)候, 這意味著要?jiǎng)?chuàng)建一個(gè)帶有@Configuration注解的類, 而在XML配置中, 這意味著要?jiǎng)?chuàng)建一個(gè)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>聲明一個(gè)bean
<bean id="compactDisc" class="soundsystem.BlankDisc">構(gòu)造器注入方式配置
<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>以上這些配置方案都不是互斥的,我們可能會(huì)同時(shí)使用自動(dòng)化和顯式配置,根據(jù)自身的需求進(jìn)行選擇即可。
總結(jié)
以上是生活随笔為你收集整理的Spring之装配Bean(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对象的访问方式
- 下一篇: gradle idea java ssm