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

简介:

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

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

 

[java]  view plain  copy
 
  print ?
  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。

代码如下:

 

[java]  view plain  copy
 
  print ?
  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.   
  7. @Configuration  
  8. public class SpringConfig {  
  9.   
  10.     @Bean  
  11.     public Piano piano(){  
  12.         return new Piano();  
  13.     }  
  14.     @Bean(name = "counter")   
  15.     public Counter counter(){  
  16.         return  new Counter(12,"Shake it Off",piano());  
  17.     }  
  18. }  

三、基础类代码

 

Counter:

 

[java]  view plain  copy
 
  print ?
  1. package SpringStudy.Model;  
  2.   
  3. public class Counter {  
  4.     public  Counter() {  
  5.     }  
  6.   
  7.     public  Counter(double multiplier, String song,Instrument instrument) {  
  8.         this.multiplier = multiplier;  
  9.         this.song = song;  
  10.         this.instrument=instrument;  
  11.     }  
  12.   
  13.     private double multiplier;  
  14.   
  15.     private String song;  
  16.   
  17.     @Resource  
  18.     private Instrument instrument;  
  19.   
  20.     public double getMultiplier() {  
  21.         return multiplier;  
  22.     }  
  23.   
  24.     public void setMultiplier(double multiplier) {  
  25.         this.multiplier = multiplier;  
  26.     }  
  27.   
  28.   
  29.     public String getSong() {  
  30.         return song;  
  31.     }  
  32.   
  33.     public void setSong(String song) {  
  34.         this.song = song;  
  35.     }  
  36.   
  37.     public Instrument getInstrument() {  
  38.         return instrument;  
  39.     }  
  40.   
  41.     public void setInstrument(Instrument instrument) {  
  42.         this.instrument = instrument;  
  43.     }  
  44.   
  45. }  

Piano类

 

[java]  view plain  copy
 
  print ?
  1. package SpringStudy.Model;  
  2.   
  3.   
  4. public class Piano {  
  5.     private String name="Piano";  
  6.     private String sound;  
  7.   
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.   
  12.     public void setName(String name) {  
  13.         this.name = name;  
  14.     }  
  15.   
  16.     public String getSound() {  
  17.         return sound;  
  18.     }  
  19.   
  20.     public void setSound(String sound) {  
  21.         this.sound = sound;  
  22.     }  
  23.   
  24. }  


四、调用测试类

 

 

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

注意:如果是在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
0
0
« 上一篇: Spring工具类ToStringBuilder用法简介
» 下一篇: @Configuration和@Bean的用法和理解
posted @ 2017-02-28 11:07 左正 阅读(439) 评论(0) 编辑 收藏
 

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/6477938.html如需转载请自行联系原作者

 

 

相关文章
|
2月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
277 3
|
1月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
2月前
|
人工智能 Java API
构建基于Java的AI智能体:使用LangChain4j与Spring AI实现RAG应用
当大模型需要处理私有、实时的数据时,检索增强生成(RAG)技术成为了核心解决方案。本文深入探讨如何在Java生态中构建具备RAG能力的AI智能体。我们将介绍新兴的Spring AI项目与成熟的LangChain4j框架,详细演示如何从零开始构建一个能够查询私有知识库的智能问答系统。内容涵盖文档加载与分块、向量数据库集成、语义检索以及与大模型的最终合成,并提供完整的代码实现,为Java开发者开启构建复杂AI智能体的大门。
1393 58
|
1月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
121 8
|
2月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
282 2
|
3月前
|
前端开发 Java 开发者
Java新手指南:在Spring MVC中使用查询字符串与参数
通过结合实际的需求和业务逻辑,开发者可以灵活地利用这些机制,为用户提供更丰富而高效的Web应用体验。
153 15
|
4月前
|
JSON 前端开发 Java
Java新手指南:如何在Spring MVC中处理请求参数
处理Spring MVC中的请求参数是通过控制器方法中的注解来完成的。这些注解包括 `@RequestParam`, `@PathVariable`, `@ModelAttribute`, `@RequestBody`, `@RequestHeader`, `@Valid`, 和 `@RequestMapping`。使用这些注解可以轻松从HTTP请求中提取所需信息,例如URL参数、表单数据或者JSON请求体,并将其转换成Java对象以供进一步处理。
473 17
|
4月前
|
存储 搜索推荐 算法
Java 大视界 -- Java 大数据在智能金融理财产品风险评估与个性化配置中的应用(195)
本文深入探讨了Java大数据技术在智能金融理财产品风险评估与个性化配置中的关键应用。通过高效的数据采集、存储与分析,Java大数据技术助力金融机构实现精准风险评估与个性化推荐,提升投资收益并降低风险。
Java 大视界 -- Java 大数据在智能金融理财产品风险评估与个性化配置中的应用(195)
|
4月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
537 1
|
3月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
701 0
下一篇
oss云网关配置