java web学习(进阶篇)四 Spring中的配置

1 Beans自动装配

之前介绍了如何使用元素来声明 bean 和通过使用 XML 配置文件中元素来注入。
Spring 容器可以在不使用这些元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少编写一个大的
基于 Spring 的应用程序的 XML 配置的数量。

自动装配模式

下列自动装配模式可用于指示 Spring 容器使用自动装配进行依赖注入。可以使用元素的 autowire属性为一个 bean 指定自动装配模式:

模式 描述
no 默认的设置,意味着没有自动装配,使用显式的bean引用来连线
byName 由属性名自动装配。Spring容器看到在 XML 配置文件中 bean的自动装配的属性设置为 byName。然后尝试匹配,并将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接
byType 由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出
constructor 由构造函数自动装配,与 byType 非常相似,但适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生。
autodetect Spring首先尝试通过 constructor 使用自动装配来连接,如果它不执行,Spring尝试通过 byType 来自动装配。可以使用 byType 或者 constructor 自动装配模式来连接数组和其他类型的集合

可以使用 byType 或者 constructor 自动装配模式来连接数组和其他类型的集合。

自动装配的局限性

当自动装配始终在同一个项目中使用时,它的效果最好。如果不使用自动装配,可能使开发人员混淆的使用它来连接只有一个或两个 bean 定义。自动装配可以显著减少需要指定的属性或构造器参数,但应在使用它们之前考虑到自动装配的局限性和缺点:

限制 描述
重写的可能性 可以使用总是重写自动装配的 <constructor-arg> 和 <property> 设置来指定依赖关系
原始数据类型 不能自动装配所谓的简单类型包括基本类型,字符串和类
混乱的本质 自动装配不如显式装配精确,所以如果可能的话尽可能使用显式装配

2基于注解的配置

从 Spring 2.5 开始可以使用注解来配置依赖注入。而不是采用 XML 来描述一个 bean 连线。可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身。

在 XML 注入之前进行注解注入,因此后者的配置将通过两种方式的属性连线被前者重写。注解连线在默认情况下在 Spring 容器中不打开。因此,在可以使用基于注解的连线之前,我们将需要在我们的 Spring 配置文件中启用它。所以想在 Spring 应用程序中使用的任何注解,可以考虑到下面的配置。

<?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:annotation-config/>
<!-- bean definitions go here -->
</beans>

配置后就可以开始注解代码了,表明 Spring 应该自动连接值到属性,方法和构造函数。

几个重要的注解:

序号 注解 & 描述
@Required 应用于 bean 属性的 setter 方法
@Autowired 应用到 bean 属性的 setter 方法,非 setter 方法,构造函数和属性
@Qualifier 通过指定确切的将被连线的 bean,@Autowired 和 @Qualifier 注解可以用来删除混乱
JSR-250 Annotations 包括 @Resource,@PostConstruct 和 @PreDestroy 注解

3 基于Java的配置

如果熟悉使用前面提到的 XML 配置,那么就不需要再学习如何进行基于 Java 的配置,因为要达到相同的结果,可以使用其他可用的配置。
基于 Java 的配置选项,可以在不用配置 XML 的情况下编写大多数的 Spring,一些有帮助的基于 Java 的注解:

@Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。

@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的bean。

@import 注解允许从另一个配置类中加载 @Bean 定义。

基于Java的配置就简单介绍到这,一般建议用XML配置。如果对此有兴趣可以自行查阅相关资料。

你可能感兴趣的:(java,spring,Web)