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
java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法相关推荐
- 零配置 之Spring基于Java类定义Bean配置元数据
转载自 [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义B ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)
概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...
- Spring中基于Java的配置@Configuration和@Bean用法
spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: [java] view plai ...
- java中变量 关键字_基于java的voliate关键字详解
voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...
- java里throws详细讲解,基于Java中throw和throws的区别(详解)
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...
- java datasource 配置_Spring boot 基于注解方式配置datasource
Spring boot 基于注解方式配置datasource Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionFactor ...
- java 写字板源代码_基于JAVA的模拟写字板的设计与实现(含录像)
基于的模拟写字板的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文18800字,程序代码,答辩PPT,答辩视频录像) 摘要 目前,很多新的技术领域都涉及到了Java语言,Java ...
- Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
1 绪论 1.1 项目概述 本项目是一个小型宿舍管理系统.首先由超管增加.删除.修改.查找.导入超管和宿管信息,再由宿管界面登录负责增加.删除.修改.查找.学生的相关缺寝信息.学生通过注册将信息加到数 ...
最新文章
- 对XX证券报关于物联网操作系统的几个问题的答复
- Open Drug Discovery Toolkit
- 一步一步webpart-webpart如何得到?(2)
- grep -v XXXXX
- ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题
- lisp的vla函数画矩形_python之:tkinter画哆啦A梦
- web应用程序servlet的映射名称的规则及请求过程
- +2流水线是怎样提高性能的,会遇到什么问题,解决方法是什么
- 单片机ISP烧录原理
- ad13批量安装元件库_常用的Altium Designer AD09 AD14 AD18元件库 原理图库(543个)+PCB封装库(509个)...
- 计算机专业英语讲课笔记(1)
- 计算机硬盘 半导体存储器 相关概念
- 5-7 六度空间 (30分)
- 关于Java String类的理解
- 在面试时应该如何自我介绍?
- 如何在 Python 中使用 Plotly 创建太阳系的 3D 模型 (教程含源码)
- 武汉财贸学校2020计算机应用,2021年武汉市财贸学校招生简章
- PNAS:人类大脑性别间差异研究—基于结构、功能及转录组多模态分析
- 专升本第六讲 (世界的“小伙伴儿”都认识了)
- Go语言十周年 | Go精华资料整理
热门文章
- 自动打开WINDWOS远程控制的注册表文件
- SpringBoot(十二)_springboot整合PageHelper
- django2 快速安装指南
- 使用Azure应用服务本地验证安卓脸书
- IBM向客户发放了一批“染毒”的U盘,现紧急建议物理销毁
- MIT黑科技:全新芯片将语音识别功耗降低99%
- [TPYBoard - Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏
- PingUtil in Android
- 指针常量 和 指向常量的指针区别
- WPFWCFWF打造HelloWorld程序