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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  8. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  9. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
  11. <context:component-scan base-package="SpringStudy.Model">
  12. </context:component-scan>
  13. </beans>

二、定义一个配置类

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

代码如下:

  1. package SpringStudy;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import SpringStudy.Model.Counter;
  5. import SpringStudy.Model.Piano;
  6. @Configuration
  7. public class SpringConfig {
  8. @Bean
  9. public Piano piano(){
  10. return new Piano();
  11. }
  12. @Bean(name = "counter")
  13. public Counter counter(){
  14. return  new Counter(12,"Shake it Off",piano());
  15. }
  16. }

三、基础类代码

Counter:

  1. package SpringStudy.Model;
  2. public class Counter {
  3. public  Counter() {
  4. }
  5. public  Counter(double multiplier, String song,Instrument instrument) {
  6. this.multiplier = multiplier;
  7. this.song = song;
  8. this.instrument=instrument;
  9. }
  10. private double multiplier;
  11. private String song;
  12. @Resource
  13. private Instrument instrument;
  14. public double getMultiplier() {
  15. return multiplier;
  16. }
  17. public void setMultiplier(double multiplier) {
  18. this.multiplier = multiplier;
  19. }
  20. public String getSong() {
  21. return song;
  22. }
  23. public void setSong(String song) {
  24. this.song = song;
  25. }
  26. public Instrument getInstrument() {
  27. return instrument;
  28. }
  29. public void setInstrument(Instrument instrument) {
  30. this.instrument = instrument;
  31. }
  32. }

Piano类

  1. package SpringStudy.Model;
  2. public class Piano {
  3. private String name="Piano";
  4. private String sound;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public String getSound() {
  12. return sound;
  13. }
  14. public void setSound(String sound) {
  15. this.sound = sound;
  16. }
  17. }

四、调用测试类

  1. package webMyBatis;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  4. import SpringStudy.Model.Counter;
  5. public class SpringTest {
  6. public static void main(String[] args) {
  7. //ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容
  8. ApplicationContext annotationContext = new AnnotationConfigApplicationContext("SpringStudy");
  9. Counter c = annotationContext.getBean("counter", Counter.class);// 创建bean的引用对象
  10. System.out.println(c.getMultiplier());
  11. System.out.println(c.isEquals());
  12. System.out.println(c.getSong());
  13. System.out.println(c.getInstrument().getName());
  14. }
  15. }

注意:如果是在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 感谢原作者

Spring中基于Java的配置@Configuration和@Bean用法 (转)的更多相关文章

  1. 【Spring】28、Spring中基于Java的配置@Configuration和@Bean用法.代替xml配置文件

    Spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: <?xml version ...

  2. Spring中基于Java的配置@Configuration和@Bean用法

    spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: <?xml version ...

  3. Spring中基于java的配置

    Spring中为了减少XML配置,可以声明一个配置类类对bean进行配置,主要用到两个注解@Configuration和@bean 例子: 首先,XML中进行少量的配置来启动java配置: <? ...

  4. spring+mybati java config配置引起的bean相互引用日志报警告问题

    摘要: Error creating bean with name 'XXX': Requested bean is currently in creation: Is there an unreso ...

  5. Spring入门学习笔记(2)——基于Java的配置

    目录 基于Java的配置 @Configuration & @Bean Annotations Example 注入Bean依赖 @Import注解 Lifecycle Callbacks(声 ...

  6. Spring IOC之基于JAVA的配置

    基础内容:@Bean 和 @Configuration 在Spring中新的支持java配置的核心组件是 @Configuration注解的类和@Bean注解的方法. @Bean注解被用于表明一个方法 ...

  7. Spring Security基于Java配置

    Maven依赖 <dependencies> <!-- ... other dependency elements ... --> <dependency> < ...

  8. Spring基于Java的配置

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/java-based-configuration.html: 基于Java的配置选项,可以使你在不用 ...

  9. Spring框架入门之基于Java注解配置bean

    Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...

随机推荐

  1. 7.treeview

    ui mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include < ...

  2. float类型和double类型的二进制存储

    在32位环境下, float占用32位,double占用64位, 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科学计数法,用符号.指数和  ...

  3. 不用copy代码--eclipse使用git提交项目-转

    原文地址:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...

  4. pyCrypto python 3.5--转

    原文地址:https://gxnotes.com/article/198426.html 问题描述 我发现一些PyCrypto安装程序为Python 3.3和3.4,但没有任何Python 3.5. ...

  5. composer的一些操作

    版本更新 命令行下:composer self-update 设置中国镜像 composer config -g repo.packagist composer https://packagist.p ...

  6. xbox 相关

    https://live.xbox.com/zh-CN/avatareditor xboxgames://

  7. Dragon Balls[HDU3635]

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...

  8. Java 自带MD5 校验文件

    http://www.iteye.com/topic/1127319 前天第一次发表博客到论坛,关于Java文件监控一文,帖子地址在:http://www.iteye.com/topic/112728 ...

  9. SpringMVC视频

    视频内容: 1.下载spring mvc以及spring mvc示例演示http://pan.baidu.com/s/1kTHRfDH 2.配置完善&初步探究控制器拦截http://pan.b ...

  10. Unity脚本中可以引用的类型

    Hierarchy(层级视图)面板里的对象,或者 Project(工程视图)里的Prefab.