zoukankan      html  css  js  c++  java
  • 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注解所标注的所有类。

    2. 定义一个配置类

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

    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。

    3. 声明一个简单的Bean

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

    @Bean
    public Performer duke() {
    return new Juggler();
    }

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

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

    之前,在XML配置文件中使用构造方法注入,使用<constructor-arg>元素来创建同时抛出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,而不是让方法创建一个新的实例。

  • 相关阅读:
    python_tkinter弹出对话框2
    python_tkinter弹出对话框1
    python生成图片二维码(利用pillow)
    nginx配置ssl证书流程及常见问题
    Django app安装,配置mysql,时区,模板,静态文件,媒体,admin
    使用Git Flow规范!
    python快速生成验证码
    json&pickle模块
    sys模块
    常用模块
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4596423.html
Copyright © 2011-2022 走看看