Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
d8245c80
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d8245c80
编写于
9月 25, 2009
作者:
M
Mark Pollack
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add minimal doc for JSR 330 support.
上级
7ae8be05
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
117 addition
and
59 deletion
+117
-59
spring-framework-reference/src/beans.xml
spring-framework-reference/src/beans.xml
+95
-40
spring-framework-reference/src/new-in-3.xml
spring-framework-reference/src/new-in-3.xml
+22
-19
未找到文件。
spring-framework-reference/src/beans.xml
浏览文件 @
d8245c80
...
...
@@ -1077,11 +1077,11 @@ public class ExampleBean {
properties themselves are not set until the bean
<emphasis>
is actually
created
</emphasis>
. Beans that are singleton-scoped and set to be
pre-instantiated (the default) are created when the container is
created. Scopes are defined in
<xref
linkend=
"beans-factory-scopes"
/>
Otherwise, the bean is created only
when it is requested. Creation of a bean potentially causes a graph of
bean
s to be created, as the bean's dependencies and its dependencies'
dependencies (and so on) are
created and assigned.
</para>
created. Scopes are defined in
<xref
linkend=
"beans-factory-scopes"
/>
Otherwise, the bean is created only when it is requested. Creation of
a bean potentially causes a graph of beans to be created, as the
bean
's dependencies and its dependencies' dependencies (and so on) are
created and assigned.
</para>
<sidebar>
<title>
Circular dependencies
</title>
...
...
@@ -2232,7 +2232,8 @@ support=support@example.co.uk</programlisting>
<para>
If you use Java 5 and thus have access to source-level
annotations, you may find
<literal><xref
linkend=
"metadata-annotations-required"
/></literal>
to be of interest.
</para>
linkend=
"metadata-annotations-required"
/></literal>
to be of
interest.
</para>
</section>
<section
id=
"beans-factory-method-injection"
>
...
...
@@ -2566,13 +2567,16 @@ public class ReplacementComputeValue implements MethodReplacer {
</tbody>
</tgroup>
</table>
<note>
<title>
Thread-scoped beans
</title>
<para>
As of Spring 3.0, a
<emphasis>
thread scope
</emphasis>
is available, but is
not registered by default. For more information, see the documentation for
<ulink
url=
"http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/SimpleThreadScope.html"
>
SimpleThreadScope
</ulink>
.
<para>
As of Spring 3.0, a
<emphasis>
thread scope
</emphasis>
is
available, but is not registered by default. For more information, see
the documentation for
<ulink
url=
"http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/SimpleThreadScope.html"
>
SimpleThreadScope
</ulink>
.
For instructions on how to register this or any other custom scope, see
<xref
linkend=
"beans-factory-scopes-custom-using"
/>
.
</para>
<xref
linkend=
"beans-factory-scopes-custom-using"
/>
.
</para>
</note>
<section
id=
"beans-factory-scopes-singleton"
>
...
...
@@ -3111,10 +3115,12 @@ public class ReplacementComputeValue implements MethodReplacer {
<para>
Suppose that you write your custom
<interfacename>
Scope
</interfacename>
implementation, and then register
it as below.
</para>
<note>
<para>
The example below uses
<literal>
SimpleThreadScope
</literal>
which is included with Spring, but not registered by default. The instructions
would be the same for your own custom
<literal>
Scope
</literal>
implementations.
</para>
<para>
The example below uses
<literal>
SimpleThreadScope
</literal>
which is included with Spring, but not registered by default. The
instructions would be the same for your own custom
<literal>
Scope
</literal>
implementations.
</para>
</note>
<programlisting
language=
"java"
>
...
...
@@ -3528,8 +3534,7 @@ public final class Boot {
<interfacename>
BeanFactory
</interfacename>
type if the field,
constructor, or method in question carries the
<interfacename>
@Autowired
</interfacename>
annotation. For more
information, see
<xref
linkend=
"beans-autowired-annotation"
/>
.
</para>
information, see
<xref
linkend=
"beans-autowired-annotation"
/>
.
</para>
<para>
When an ApplicationContext creates a class that implements the
<interfacename>
org.springframework.beans.factory.BeanNameAware
</interfacename>
...
...
@@ -3846,12 +3851,12 @@ org.springframework.scripting.groovy.GroovyMessenger@272961</programlisting>
<para>
Using callback interfaces or annotations in conjunction with a
custom
<interfacename>
BeanPostProcessor
</interfacename>
implementation
is a common means of extending the Spring IoC container. An example is
shown in
<xref
linkend=
"metadata-annotations-required"
/>
which
demonstrates the
usage of a custom
<interfacename>
BeanPostProcessor
</interfacename>
implementation that ships with the Spring distribution which ensures
that JavaBean properties on beans that are marked with an (arbitrary)
annotation are actually (configured to be) dependency-injected with a
value.
</para>
shown in
<xref
linkend=
"metadata-annotations-required"
/>
which
demonstrates the usage of a custom
<interfacename>
BeanPostProcessor
</interfacename>
implementation that
ships with the Spring distribution which ensures that JavaBean
properties on beans that are marked with an (arbitrary) annotation are
actually (configured to be) dependency-injected with a
value.
</para>
</section>
</section>
...
...
@@ -4178,12 +4183,16 @@ dataSource.url=jdbc:mysql:mydb</programlisting>
adds support for JSR-250 annotations such as
<interfacename>
@Resource
</interfacename>
,
<interfacename>
@PostConstruct
</interfacename>
, and
<interfacename>
@PreDestroy
</interfacename>
. Use of these annotations also
requires that certain
<interfacename>
BeanPostProcessors
</interfacename>
be
registered within the Spring container. As always, you can register them
as individual bean definitions, but they can also be implicitly registered
by including the following tag in an XML-based Spring configuration
(notice the inclusion of the
<literal>
context
</literal>
namespace):
</para>
<interfacename>
@PreDestroy
</interfacename>
. Spring 3.0 adds support for
JSR-330 (Dependency Injection for Java) annotations contained in the
javax.inject package such as
<classname>
@Inject
</classname>
,
<literal>
@Qualifier, @Named, and @Provider
</literal>
if the JSR330 jar is
present on the classpath. Use of these annotations also requires that
certain
<interfacename>
BeanPostProcessors
</interfacename>
be registered
within the Spring container. As always, you can register them as
individual bean definitions, but they can also be implicitly registered by
including the following tag in an XML-based Spring configuration (notice
the inclusion of the
<literal>
context
</literal>
namespace):
</para>
<programlisting
language=
"xml"
>
<
?xml version="1.0" encoding="UTF-8"?
>
<
beans xmlns="http://www.springframework.org/schema/beans"
...
...
@@ -4250,12 +4259,22 @@ dataSource.url=jdbc:mysql:mydb</programlisting>
</section>
<section
id=
"beans-autowired-annotation"
>
<title><interfacename>
@Autowired
</interfacename></title>
<title><interfacename>
@Autowired
and @Inject
</interfacename></title>
<para>
As expected, you can apply the
<interfacename>
@Autowired
</interfacename>
annotation to "traditional"
setter methods:
</para>
<note>
<para>
JSR 330's @Inject annotation can be used in place of Spring's
<interfacename>
@Autowired
</interfacename>
in the examples below.
<interfacename>
@Inject
</interfacename>
does not have a required
property unlike Spring's
<interfacename>
@Autowire
</interfacename>
annotation which as a required property to indicate if the value being
injected is optional. This behavior is enabled automatically if you
have the JSR 330 jar on the classpath.
</para>
</note>
<programlisting
language=
"java"
>
public class SimpleMovieLister {
private MovieFinder movieFinder;
...
...
@@ -4423,6 +4442,14 @@ dataSource.url=jdbc:mysql:mydb</programlisting>
matches so that a specific bean is chosen for each argument. In the
simplest case, this can be a plain descriptive value:
</para>
<note>
<para>
Note that the JSR 330
<interfacename>
@Qualifier
</interfacename>
annotation can only be applied as a meta-annotation unlike Spring's
@Qualifier which takes a string property to discriminate among
multiple injection candidates and can be placed on annotation as well
as types, fields, methods, contstructors and parameters.
</para>
</note>
<programlisting
language=
"java"
>
public class MovieRecommender {
@Autowired
...
...
@@ -4537,6 +4564,14 @@ dataSource.url=jdbc:mysql:mydb</programlisting>
<interfacename>
@Qualifier
</interfacename>
annotation within your
definition:
</para>
<note>
<para>
You can use JSR 330's
<interfacename>
@Qualifier
</interfacename>
annotation in the manner described below in place of
Spring's
<interfacename>
@Qualifier
</interfacename>
annotation. This
behavior is enabled automatically if you have the JSR 330 jar on the
classpath.
</para>
</note>
<programlisting
language=
"java"
>
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
<emphasis
role=
"bold"
>
@Qualifier
</emphasis>
...
...
@@ -5046,6 +5081,18 @@ public class JpaMovieFinder implements MovieFinder {
by including the
<emphasis>
annotation-config
</emphasis>
attribute with
a value of false.
</para>
</note>
<note>
<para>
In Spring 3.0 RC1 you can use JSR 330's
<interfacename>
@Named
</interfacename>
annotation in place of
stereotpye annotations and they will be automatically detected during
component-scanning. The value of the
<interfacename>
@Named
</interfacename>
property will be used as the
Bean Name. At this time Spring default for bean scope will be applied
when using @Named. This behavior as well as mapping of JSR 330 and
JSR299 scopes is planned for Spring 3.0 GA assuming the JSRs are
stable at that time.
</para>
</note>
</section>
<section
id=
"beans-scanning-filters"
>
...
...
@@ -5129,8 +5176,7 @@ public class JpaMovieFinder implements MovieFinder {
<entry>
A custom implementation of the
<interfacename>
org.springframework.core.type
.TypeFilter
</interfacename>
interface.
</entry>
.TypeFilter
</interfacename>
interface.
</entry>
</row>
</tbody>
</tgroup>
...
...
@@ -5194,7 +5240,8 @@ public class FactoryMethodComponent {
annotations that can be specified are
<literal>
@Scope
</literal>
,
<literal>
@Lazy
</literal>
, and custom qualifier annotations. Autowired
fields and methods are supported as previously discussed, with
additional support for autowiring of
<literal>
@Bean
</literal>
methods:
</para>
additional support for autowiring of
<literal>
@Bean
</literal>
methods:
</para>
<programlisting
language=
"java"
>
@Component
public class FactoryMethodComponent {
...
...
@@ -5265,12 +5312,20 @@ public class FactoryMethodComponent {
<interfacename>
@Service
</interfacename>
, and
<interfacename>
@Controller
</interfacename>
) that contains a
<literal>
name
</literal>
value will thereby provide that name to the
corresponding bean definition. If such an annotation contains no
<literal>
name
</literal>
value or for any other detected component (such
as those discovered by custom filters), the default bean name generator
returns the uncapitalized non-qualified class name. For example, if the
following two components were detected, the names would be myMovieLister
and movieFinderImpl:
</para>
corresponding bean definition.
</para>
<note>
<para>
JSR 330's @Named annotation can be used as a mean to both detect
components and to provide them with a name. This behavior is enabled
automatically if you have the JSR 330 jar on the classpath.
</para>
</note>
<para>
If such an annotation contains no
<literal>
name
</literal>
value or
for any other detected component (such as those discovered by custom
filters), the default bean name generator returns the uncapitalized
non-qualified class name. For example, if the following two components
were detected, the names would be myMovieLister and
movieFinderImpl:
</para>
<programlisting
language=
"java"
>
@Service("myMovieLister")
public class SimpleMovieLister {
...
...
@@ -5516,7 +5571,8 @@ public class AppConfig {
<interfacename>
@Configuration
</interfacename>
-annotated class supports
the regular lifecycle callbacks. Any classes defined with the @Bean
annotation can use the @PostConstruct and @PreDestroy annotations from
JSR-250, see
<link
linkend=
"beans-factory-lifecycle-combined-effects"
>
JSR-250
JSR-250, see
<link
linkend=
"beans-factory-lifecycle-combined-effects"
>
JSR-250
annotations
</link>
for further details.
</para>
<para>
The regular Spring
<link
...
...
@@ -5528,8 +5584,7 @@ public class AppConfig {
<para>
The standard set of
<code>
*Aware
</code>
interfaces such as
<code><link
linkend=
"beans-beanfactory"
>
BeanFactoryAware
</link></code>
,
<code><link
linkend=
"beans-factory-aware"
>
BeanNameAware
</link></code>
,
<code><link
linkend=
"beans-factory-aware"
>
BeanNameAware
</link></code>
,
<code><link
linkend=
"context-functionality-messagesource"
>
MessageSourceAware
</link></code>
,
<code><link
...
...
spring-framework-reference/src/new-in-3.xml
浏览文件 @
d8245c80
...
...
@@ -68,8 +68,8 @@
<sidebar
id=
"new-in-3-intro-work-in-progress"
>
<title>
Note:
</title>
<para>
This document is not yet available. It will
be available for the
Spring 3.0 final release.
</para>
<para>
This document is not yet available. It will
be available for the
Spring 3.0 final release.
</para>
</sidebar>
</section>
...
...
@@ -186,7 +186,8 @@
</listitem>
<listitem>
<para>
General-purpose type conversion system and UI field formatting system
</para>
<para>
General-purpose type conversion system and UI field formatting
system
</para>
</listitem>
<listitem>
...
...
@@ -384,15 +385,18 @@ public class AppConfig {
</section>
<section
id=
"new-feature-convert-and-format"
>
<title>
General purpose type conversion system and UI field formatting system
</title>
<para>
A general purpose
<link
linkend=
"core.convert"
>
type conversion system
</link>
has been introduced.
The system is currently used by SpEL for type coersion, and may also be used by a Spring Container when binding bean property values.
</para>
<para>
In addition, a
<link
linkend=
"ui.format"
>
ui.format
</link>
system has been introduced for formatting UI field values.
This system provides a simpler and more robust alternative to JavaBean PropertyEditors in UI environments such as Spring MVC.
</para>
<title>
General purpose type conversion system and UI field formatting
system
</title>
<para>
A general purpose
<link
linkend=
"core.convert"
>
type conversion
system
</link>
has been introduced. The system is currently used by SpEL
for type coersion, and may also be used by a Spring Container when
binding bean property values.
</para>
<para>
In addition, a
<link
linkend=
"ui.format"
>
ui.format
</link>
system
has been introduced for formatting UI field values. This system provides
a simpler and more robust alternative to JavaBean PropertyEditors in UI
environments such as Spring MVC.
</para>
</section>
<section
id=
"new-feature-oxm"
>
...
...
@@ -431,9 +435,9 @@ public class AppConfig {
the
<emphasis>
Object to XML mapping
</emphasis>
functionality mentioned
earlier.
</para>
<para>
Refer to the section on
<link
linkend=
"mvc"
>
MVC
</link>
and
<link
linkend=
"rest-resttemplate"
>
the RestTemplate
</link>
for more
information.
</para>
<para>
Refer to the section on
<link
linkend=
"mvc"
>
MVC
</link>
and
<link
linkend=
"rest-resttemplate"
>
the RestTemplate
</link>
for more
information.
</para>
</section>
<section>
...
...
@@ -452,9 +456,8 @@ public class AppConfig {
<section
id=
"new-feature-validation"
>
<title>
Declarative model validation
</title>
<para>
Hibernate Validator, JSR 303
</para>
<para>
Work in progress... not part of the Spring 3.0 M3 release.
</para>
<para>
JSR 303 support using Hibernate Validator as the
implementation.
</para>
</section>
<section
id=
"new-feature-jee-6"
>
...
...
@@ -464,7 +467,7 @@ public class AppConfig {
use of the new @Async annotation (or EJB 3.1's @Asynchronous
annotation).
</para>
<para>
JSF 2.0, JPA 2.0, etc
</para>
<para>
JS
R 303, JS
F 2.0, JPA 2.0, etc
</para>
<para>
Work in progress... not part of the Spring 3.0 M3 release.
</para>
</section>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录