spring实战六之使用基于java配置的Spring

本文内容纲要:spring实战六之使用基于java配置的Spring

之前接触的都是基于XML配置的Spring,Spring3.0开始可以几乎不使用XML而使用纯粹的java代码来配置Spring应用。使用基于java配置的Spring的步骤如下:

  1. 创建基于java的配置。

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

<?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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans

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

http://www.springframework.org/schema/context

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

<context:component-scan

base-package="com.springinaction.springidol" />

</beans>

context:component-scan除了知道如何自动注册那些使用某种构造型(stereotype)的注解所标注的Bean,它也会自动加载使用 @Configuration注解所标注的类。在上面的配置中,base-package属性告知Spring在com.springinaction.spring-idol包内查找使用@Configuration注解所标注的所有类。

  1. 定义一个配置类

在基于java的配置里使用@Configuration注解的java类,就等价于XML配置中的元素,如下所示:

package com.springinaction.springidol;

import org.springframework.context.annotation.Configuration;

@Configuration

public class SpringIdolConfig {

// Bean declaration methods go here

}

@Configuration注解会作为一个标识告知Spring:这个类将包含一个或多个Spring Bean的定义。这些Bean的定义是使用@Bean注解所标注的方法。接下来使用@Bean来装配使用Spring基于java的配置所声明的Bean。

  1. 声明一个简单的Bean

使用@Bean注解标注一个方法来定义duke Bean:

@Bean

public Performer duke() {

return new Juggler();

}

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

  1. 使用Spring的基于java的配置进行注入。

之前,在XML配置文件中使用构造方法注入,使用元素来创建同时抛出15个的杂技师。而使用基于java的配置,只需要把数字直接传人构造器中:

@Bean

public Performer duke15() {

return new Juggler(15);

}

Setter方法注入也是自然的java代码:

@Bean

public Performer kenny() {

Instrumentalist kenny = new Instrumentalist();

kenny.setSong("Jingle Bells");

return kenny;

}

上面展示的是基于java配置的对于简单值的构造器注入和Setter方法注入。接下来说明Bean是如何装配另一个Bean的引用的。

首先用java声明一个sonnet29 Bean:

@Bean

private Poem sonnet29() {

return new Sonnet29();

}

这是一个简单的基于java的Bean的声明。

接下来创建一个PoeticJuggler Bean,通过构造器为它装配sonnet29 Bean:

@Bean

public Performer poeticDuke() {

return new PoeticJuggler(sonnet29());

}

上面就是通过引用其他Bean的方法来装配Bean的引用。

在Spring的java配置中,通过声明方法引用一个Bean并不等同于调用该方法。

通过使用@Bean注解标注sonnet29()方法,会告知Spring我们希望该方法定义的Bean要被注册进Spring的应用上下文中。因此,在其他Bean的声明方法中引用这个方法时,Spring都会拦截该方法的调用,并尝试在应用上下文中查找该Bean,而不是让方法创建一个新的实例。

本文内容总结:spring实战六之使用基于java配置的Spring

原文链接:https://www.cnblogs.com/longshiyVip/p/4596423.html

以上是 spring实战六之使用基于java配置的Spring 的全部内容, 来源链接: utcz.com/z/296451.html

回到顶部