spring实战六之使用基于java配置的Spring
本文内容纲要:spring实战六之使用基于java配置的Spring
之前接触的都是基于XML配置的Spring,Spring3.0开始可以几乎不使用XML而使用纯粹的java代码来配置Spring应用。使用基于java配置的Spring的步骤如下:
- 创建基于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注解所标注的所有类。
- 定义一个配置类
在基于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。
- 声明一个简单的Bean
使用@Bean注解标注一个方法来定义duke Bean:
@Beanpublic Performer duke() {
return new Juggler();
}
上面的配置等价于之前使用XML所配置的
- 使用Spring的基于java的配置进行注入。
之前,在XML配置文件中使用构造方法注入,使用
@Beanpublic Performer duke15() {
return new Juggler(15);
}
Setter方法注入也是自然的java代码:
@Beanpublic Performer kenny() {
Instrumentalist kenny = new Instrumentalist();
kenny.setSong("Jingle Bells");
return kenny;
}
上面展示的是基于java配置的对于简单值的构造器注入和Setter方法注入。接下来说明Bean是如何装配另一个Bean的引用的。
首先用java声明一个sonnet29 Bean:
@Beanprivate Poem sonnet29() {
return new Sonnet29();
}
这是一个简单的基于java的Bean的声明。
接下来创建一个PoeticJuggler Bean,通过构造器为它装配sonnet29 Bean:
@Beanpublic 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