java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法

Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置。

一、首先,需要xml中进行少量的配置来启动Java配置:

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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<?xml version="1.0" encoding="UTF-8"?>

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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

二、定义一个配置类

用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。

代码如下:

packageSpringStudy;

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

importSpringStudy.Model.Counter;

importSpringStudy.Model.Piano;

@Configuration

publicclassSpringConfig {

@Bean

publicPiano piano(){

returnnewPiano();

}

@Bean(name ="counter")

publicCounter counter(){

returnnewCounter(12,"Shake it Off",piano());

}

}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:

packageSpringStudy.Model;

publicclassCounter {

publicCounter() {

}

publicCounter(doublemultiplier, String song,Instrument instrument) {

this.multiplier = multiplier;

this.song = song;

this.instrument=instrument;

}

privatedoublemultiplier;

privateString song;

@Resource

privateInstrument instrument;

publicdoublegetMultiplier() {

returnmultiplier;

}

publicvoidsetMultiplier(doublemultiplier) {

this.multiplier = multiplier;

}

publicString getSong() {

returnsong;

}

publicvoidsetSong(String song) {

this.song = song;

}

publicInstrument getInstrument() {

returninstrument;

}

publicvoidsetInstrument(Instrument instrument) {

this.instrument = instrument;

}

}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类

packageSpringStudy.Model;

publicclassPiano {

privateString name="Piano";

privateString sound;

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name = name;

}

publicString getSound() {

returnsound;

}

publicvoidsetSound(String sound) {

this.sound = sound;

}

}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;

}

}

四、调用测试类

packagewebMyBatis;

importorg.springframework.context.ApplicationContext;

importorg.springframework.context.annotation.AnnotationConfigApplicationContext;

importSpringStudy.Model.Counter;

publicclassSpringTest {

publicstaticvoidmain(String[] args) {

//ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容

ApplicationContext annotationContext = newAnnotationConfigApplicationContext("SpringStudy");

Counter c = annotationContext.getBean("counter", Counter.class);// 创建bean的引用对象

System.out.println(c.getMultiplier());

System.out.println(c.isEquals());

System.out.println(c.getSong());

System.out.println(c.getInstrument().getName());

}

}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 ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容

ApplicationContext annotationContext = new AnnotationConfigApplicationContext("SpringStudy");

Counter c = annotationContext.getBean("counter", Counter.class);// 创建bean的引用对象

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值