生活随笔
收集整理的這篇文章主要介紹了
Spring中基于Java的配置@Configuration和@Bean用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spring中為了減少xml中配置,可以生命一個配置類(例如SpringConfig)來對bean進行配置。
一、首先,需要xml中進行少量的配置來啟動Java配置:
[java]?view plaincopy print?
<?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:aop="http://www.springframework.org/schema/aop"??????xmlns:tx="http://www.springframework.org/schema/tx"?xmlns:p="http://www.springframework.org/schema/p"??????xmlns:context="http://www.springframework.org/schema/context"??????xsi:schemaLocation="??????????????http:????????????http:????????????http:????????????http:???<context:component-scan?base-package="SpringStudy.Model">??????</context:component-scan>??</beans>??
二、定義一個配置類
用@Configuration注解該類,等價 與XML中配置beans;用@Bean標注方法等價于XML中配置bean。
代碼如下:
[java]?view plaincopy print?
package?SpringStudy;??import?org.springframework.context.annotation.Bean;??import?org.springframework.context.annotation.Configuration;??import?SpringStudy.Model.Counter;??import?SpringStudy.Model.Piano;????@Configuration??public?class?SpringConfig?{????????@Bean??????public?Piano?piano(){??????????return?new?Piano();??????}??????@Bean(name?=?"counter")???????public?Counter?counter(){??????????return??new?Counter(12,"Shake?it?Off",piano());??????}??}?? 三、基礎類代碼
Counter:
[java]?view plaincopy print?
package?SpringStudy.Model;????public?class?Counter?{??????public??Counter()?{??????}????????public??Counter(double?multiplier,?String?song,Instrument?instrument)?{??????????this.multiplier?=?multiplier;??????????this.song?=?song;??????????this.instrument=instrument;??????}????????private?double?multiplier;????????private?String?song;????????@Resource??????private?Instrument?instrument;????????public?double?getMultiplier()?{??????????return?multiplier;??????}????????public?void?setMultiplier(double?multiplier)?{??????????this.multiplier?=?multiplier;??????}??????????public?String?getSong()?{??????????return?song;??????}????????public?void?setSong(String?song)?{??????????this.song?=?song;??????}????????public?Instrument?getInstrument()?{??????????return?instrument;??????}????????public?void?setInstrument(Instrument?instrument)?{??????????this.instrument?=?instrument;??????}????}?? Piano類
[java]?view plaincopy print?
package?SpringStudy.Model;??????public?class?Piano?{??????private?String?name="Piano";??????private?String?sound;????????public?String?getName()?{??????????return?name;??????}????????public?void?setName(String?name)?{??????????this.name?=?name;??????}????????public?String?getSound()?{??????????return?sound;??????}????????public?void?setSound(String?sound)?{??????????this.sound?=?sound;??????}????}??
四、調用測試類
[java]?view plaincopy print?
package?webMyBatis;????import?org.springframework.context.ApplicationContext;??import?org.springframework.context.annotation.AnnotationConfigApplicationContext;??import?SpringStudy.Model.Counter;????public?class?SpringTest?{??????public?static?void?main(String[]?args)?{??????????????????ApplicationContext?annotationContext?=?new?AnnotationConfigApplicationContext("SpringStudy");??????????Counter?c?=?annotationContext.getBean("counter",?Counter.class);????????System.out.println(c.getMultiplier());??????????System.out.println(c.isEquals());??????????System.out.println(c.getSong());??????????????System.out.println(c.getInstrument().getName());??????}??}?? 注意:如果是在xml中配置beans和bean的話,或者使用自動掃描調用的話,代碼為
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 讀取bean.xml中的內容
Counter c = ctx.getBean("counter", Counter.class);// 創建bean的引用對象
五、運行結果
12.0
false
Shake it Off
Piano
總結
以上是生活随笔為你收集整理的Spring中基于Java的配置@Configuration和@Bean用法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。