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

java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法相关推荐

  1. 零配置 之Spring基于Java类定义Bean配置元数据

    转载自  [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义B ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)

    概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...

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

    spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: [java] view plai ...

  5. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

  6. java里throws详细讲解,基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  7. java datasource 配置_Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionFactor ...

  8. java 写字板源代码_基于JAVA的模拟写字板的设计与实现(含录像)

    基于的模拟写字板的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文18800字,程序代码,答辩PPT,答辩视频录像) 摘要 目前,很多新的技术领域都涉及到了Java语言,Java ...

  9. Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)

    1 绪论 1.1 项目概述 本项目是一个小型宿舍管理系统.首先由超管增加.删除.修改.查找.导入超管和宿管信息,再由宿管界面登录负责增加.删除.修改.查找.学生的相关缺寝信息.学生通过注册将信息加到数 ...

最新文章

  1. 对XX证券报关于物联网操作系统的几个问题的答复
  2. Open Drug Discovery Toolkit
  3. 一步一步webpart-webpart如何得到?(2)
  4. grep -v XXXXX
  5. ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题
  6. lisp的vla函数画矩形_python之:tkinter画哆啦A梦
  7. web应用程序servlet的映射名称的规则及请求过程
  8. +2流水线是怎样提高性能的,会遇到什么问题,解决方法是什么
  9. 单片机ISP烧录原理
  10. ad13批量安装元件库_常用的Altium Designer AD09 AD14 AD18元件库 原理图库(543个)+PCB封装库(509个)...
  11. 计算机专业英语讲课笔记(1)
  12. 计算机硬盘 半导体存储器 相关概念
  13. 5-7 六度空间 (30分)
  14. 关于Java String类的理解
  15. 在面试时应该如何自我介绍?
  16. 如何在 Python 中使用 Plotly 创建太阳系的 3D 模型 (教程含源码)
  17. 武汉财贸学校2020计算机应用,2021年武汉市财贸学校招生简章
  18. PNAS:人类大脑性别间差异研究—基于结构、功能及转录组多模态分析
  19. 专升本第六讲 (世界的“小伙伴儿”都认识了)
  20. Go语言十周年 | Go精华资料整理

热门文章

  1. 自动打开WINDWOS远程控制的注册表文件
  2. SpringBoot(十二)_springboot整合PageHelper
  3. django2 快速安装指南
  4. 使用Azure应用服务本地验证安卓脸书
  5. IBM向客户发放了一批“染毒”的U盘,现紧急建议物理销毁
  6. MIT黑科技:全新芯片将语音识别功耗降低99%
  7. [TPYBoard - Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏
  8. PingUtil in Android
  9. 指针常量 和 指向常量的指针区别
  10. WPFWCFWF打造HelloWorld程序