您的位置:首页 > 编程语言 > Java开发

Spring中基于Java的配置@Configuration和@Bean用法 (转)

2017-03-20 21:43 531 查看
spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。

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

[java] view plain copy

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://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">

<context:component-scan base-package="SpringStudy.Model">

</context:component-scan>

</beans>

二、定义一个配置类

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

代码如下:

[java] view plain copy

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 plain copy

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 plain copy

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 plain copy

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

本文转自http://blog.csdn.net/vvhesj/article/details/47661001 感谢原作者
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: