`
liujiekasini0312
  • 浏览: 131090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  8. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  9. http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  10. http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsd">
  11. <context:component-scanbase-package="SpringStudy.Model">
  12. </context:component-scan>
  13. </beans>

二、定义一个配置类

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

代码如下:

  1. packageSpringStudy;
  2. importorg.springframework.context.annotation.Bean;
  3. importorg.springframework.context.annotation.Configuration;
  4. importSpringStudy.Model.Counter;
  5. importSpringStudy.Model.Piano;
  6. @Configuration
  7. publicclassSpringConfig{
  8. @Bean
  9. publicPianopiano(){
  10. returnnewPiano();
  11. }
  12. @Bean(name="counter")
  13. publicCountercounter(){
  14. returnnewCounter(12,"ShakeitOff",piano());
  15. }
  16. }
三、基础类代码

Counter:

  1. packageSpringStudy.Model;
  2. publicclassCounter{
  3. publicCounter(){
  4. }
  5. publicCounter(doublemultiplier,Stringsong,Instrumentinstrument){
  6. this.multiplier=multiplier;
  7. this.song=song;
  8. this.instrument=instrument;
  9. }
  10. privatedoublemultiplier;
  11. privateStringsong;
  12. @Resource
  13. privateInstrumentinstrument;
  14. publicdoublegetMultiplier(){
  15. returnmultiplier;
  16. }
  17. publicvoidsetMultiplier(doublemultiplier){
  18. this.multiplier=multiplier;
  19. }
  20. publicStringgetSong(){
  21. returnsong;
  22. }
  23. publicvoidsetSong(Stringsong){
  24. this.song=song;
  25. }
  26. publicInstrumentgetInstrument(){
  27. returninstrument;
  28. }
  29. publicvoidsetInstrument(Instrumentinstrument){
  30. this.instrument=instrument;
  31. }
  32. }

Piano类

  1. packageSpringStudy.Model;
  2. publicclassPiano{
  3. privateStringname="Piano";
  4. privateStringsound;
  5. publicStringgetName(){
  6. returnname;
  7. }
  8. publicvoidsetName(Stringname){
  9. this.name=name;
  10. }
  11. publicStringgetSound(){
  12. returnsound;
  13. }
  14. publicvoidsetSound(Stringsound){
  15. this.sound=sound;
  16. }
  17. }

四、调用测试类

  1. packagewebMyBatis;
  2. importorg.springframework.context.ApplicationContext;
  3. importorg.springframework.context.annotation.AnnotationConfigApplicationContext;
  4. importSpringStudy.Model.Counter;
  5. publicclassSpringTest{
  6. publicstaticvoidmain(String[]args){
  7. //ApplicationContextctx=newClassPathXmlApplicationContext("spring/bean.xml");//读取bean.xml中的内容
  8. ApplicationContextannotationContext=newAnnotationConfigApplicationContext("SpringStudy");
  9. Counterc=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

分享到:
评论

相关推荐

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

    主要介绍了Spring中基于Java的配置@Configuration和@Bean用法详解,Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置。,需要的朋友可以参考下

    Spring 基于java的容器配置.docx

    Spring新的java配置支持中的核心构件是@Configuration注解的类和@Bean注解的方法。 @Bean注解用于指示方法实例化、配置和初始化由Spring IoC容器管理的新对象。对于那些熟悉Spring的 XML配置的人来说,@Bean注解的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring核心注解深入解析:提升开发效率

    @Configuration 和 @Bean 注解用于Java配置,允许开发者用程序的方式定义Spring容器中的bean,取代传统的XML配置文件。 @Value 提供了一种方便的方式来注入简单类型的属性,支持SpEL表达式和外部配置。

    java-practice:Java初学者练习

    @Configuration(是XML配置文件的模拟) -用于定义bean的类-允许访问spring上下文-如果您在类中标注了@Component,则需要@ComponentScan对该类进行@Configuration \标注 @Bean(名称= ..可选) -注释@Bean(在方法...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    springboot学习思维笔记.xmind

    @Bean注解在方法上,声明当前方法的返回值为一个Bean AOP @Aspect 声明是一个切面 拦截规则@After @Before @Around PointCut JoinPoint Spring常用配置 Bean的Scope Singleton ...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    springboot-autowire:学习springboot自动装配原理

    从Spring3.0,@ Configuration用于定义的配置类,可替换XML配置文件,被注解的类内部包含一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Spring Security 中文教程.pdf

    Spring Bean配置 19.4.6. LDAP属性和自定义UserDetails 20. JSP标签库 20.1. 声明Taglib 20.2. authorize 标签 20.3. authentication 标签 20.4. accesscontrollist 标签 21. Java认证和授权服务...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    Spring Security-3.0.1中文官方文档(翻译版)

    Spring Bean 配置 19.4.6. LDAP 属性和自定义UserDetails 20. JSP 标签库 20.1. 声明Taglib 20.2. authorize 标签 20.3. authentication 标签 20.4. accesscontrollist 标签 21. Java 认证和授权服务...

    Java的Spring Boot 集成 Elasticsearch 使用详解.docx

    然后在 config 包下创建 ElasticsearchConfiguration 类,会从配置文件中读取到对应的参数,接着申明一个 initRestClient 方法,返回的是一个 RestHighLevelClient,同时为它添加 @Bean(destroyMethod = ...

    SpringSecurity 3.0.1.RELEASE.CHM

    Spring Bean配置 18.4.6. LDAP属性和自定义UserDetails 19. JSP标签库 19.1. 声明Taglib 19.2. authorize标签 19.3. authentication 标签 19.4. accesscontrollist 标签 20. Java认证和授权服务(JAAS)供应...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    改配置可以自动生成,使用eclipse进行自动生成,在建立时,如下图,可直接生成对应的action类和formbean类。 1 2 &lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...

    spring3.1中文参考文档

    1.3.1.1 Spring依赖和基于Spring ................................................................................................... 14 1.3.1.2 Maven依赖管理 ...............................................

    spring-retry

    下面的示例演示如何以声明式样式使用Spring Retry: @Configuration @EnableRetry public class Application { @Bean public Service service () { return new Service (); } } @Service class Service { @...

    IoC容器的设计(利用反射、注解和工厂模式实现)

    我们需要将自定义四个注解,然后将Group和User类使用@Component注解,在User类中创建Group类的实例化对象并设置为自动装配,这样就能在User类中调用Group类的方法; 然后我们需要自己实现一个IoC容器类,处理自定义...

Global site tag (gtag.js) - Google Analytics