3.4 使用Spring基于Java的配置

时间:2022-04-24 20:34:12

3.4.1 创建基于java的配置

配置极少量的XML来启动java配置:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"

           default-init-method="turnOnLights"

           default-destroy-method="turnOfLights"

           >

<context:component-scanbase-package=”…”/>

</beans>

<context:component-scan>自动注册那些使用某种构造器(stereotype)注解所标注的Bean的,也会自动加载使用@Configuration注解所标注的类。在该示例中,base-package属性告知Spring在...包内查找使用@Configuration注解所标注的所有类。

 

3.4.2 定义一个配置类

在基于java的配置里使用@Configuration注解的java类,就等价于XML配置中的<beans>元素。

importorg.springframework.context.annotation.Configuration;

@Configuration

public class SpringIdolConfig{
     //Bean declaration methods go here

}

@Configuration注解会作为一个标志告知Spring:这个类将包含一个或多个Spring Bean的定义。这些Bean的定义是使用@Bean注解所标注的方法。

 

3.4.3 声明一个简单的Bean

@Bean

public Performer duke(){
   return new Juggler();

}

这个简单方法就是java配置,它等价于之前使用XML所配置的<bean>元素。@Bean告知Spring这个方法将返回一个对象,该对象应该配注册为Spring应用上下文中的一个Bean。方法名将作为该Bean的ID。在该方法中所实现的所有逻辑本质上都是为了创建Bean。

3.4.4 使用Spring的基于Java的配置进行注入

使用基于java的配置,只需要把数字直接传入构造器中:

@Bean

public Performer duke15(){

 return new Juggler(15);

}

定义Bean就像我们使用Java编写类的实例代码一样。Setter注入也是自然的Java代码:

@Bean

public Performer Kenny(){
   Instrumentalist kenny = newInstrumentalist();

  kenny.setSong(“Jingle Bells”);

  return Kenny;

}

 

Bean装配另一个Bean的引用:

@Bean

private Poem sonnet29(){

   return new Sonnet29();

}

创建一个PoeticJugglerBean,通过构造器为它装配sonnet29Bean:

@Bean

public Performer poeticDuke(){

   return new PoeticJuggler(sonnet29());

}