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

xiaoxiao2021-02-28  12

http://blog.csdn.net/vvhesj/article/details/47661001

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

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

[java]  view plain  copy <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"       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">      <context:component-scan base-package="SpringStudy.Model">       </context:component-scan>   </beans>   二、定义一个配置类

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

代码如下:

[java]  view plain  copy 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:

[java]  view plain  copy 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类

[java]  view plain  copy 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;       }      }   四、调用测试类

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

转载请注明原文地址: https://www.6miu.com/read-1100248.html

最新回复(0)