博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring注入内部bean
阅读量:6094 次
发布时间:2019-06-20

本文共 3069 字,大约阅读时间需要 10 分钟。

正如你所知道的Java内部类是其他类的范围内定义的,同样,内部bean是被其他bean的范围内定义的bean。因此<property/>或<constructor-arg/>元素内<bean/>元件被称为内部bean和它如下所示。

 
<?
xml version
=
"1.0"
encoding
=
"UTF-8"
?>
<beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<bean
id
=
"outerBean"
class
=
"..."
>
<property
name
=
"target"
>
<bean
id
=
"innerBean"
class
=
"..."
/>
</property>
</bean>
</beans>

例如:

我们使用Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:

步骤 描述
1 Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project.
2 Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter.
3 Create Java classes TextEditor, SpellChecker and MainApp under the com.yiibaipackage.
4 Create Beans configuration file Beans.xml under the src folder.
5 The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.

这里是TextEditor.java文件的内容:

 
package
com
.
yiibai
;
public
class
TextEditor
{
private
SpellChecker
spellChecker
;
// a setter method to inject the dependency.
public
void
setSpellChecker
(
SpellChecker
spellChecker
)
{
System
.
out
.
println
(
"Inside setSpellChecker."
);
this
.
spellChecker
=
spellChecker
;
}
// a getter method to return spellChecker
public
SpellChecker
getSpellChecker
()
{
return
spellChecker
;
}
public
void
spellCheck
()
{
spellChecker
.
checkSpelling
();
}
}

下面是另外一个相关的类文件SpellChecker.java内容:

 
package
com
.
yiibai
;
public
class
SpellChecker
{
public
SpellChecker
(){
System
.
out
.
println
(
"Inside SpellChecker constructor."
);
}
public
void
checkSpelling
(){
System
.
out
.
println
(
"Inside checkSpelling."
);
}
}

以下是MainApp.java文件的内容:

 
package
com
.
yiibai
;
import
org
.
springframework
.
context
.
ApplicationContext
;
import
org
.
springframework
.
context
.
support
.
ClassPathXmlApplicationContext
;
public
class
MainApp
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
ClassPathXmlApplicationContext
(
"Beans.xml"
);
TextEditor
te
=
(
TextEditor
)
context
.
getBean
(
"textEditor"
);
te
.
spellCheck
();
}
}

以下是配置文件beans.xml文件里面有配置为基于setter 注入,但使用内部bean:

 
<?
xml version
=
"1.0"
encoding
=
"UTF-8"
?>
<beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<!-- Definition for textEditor bean using inner bean -->
<bean
id
=
"textEditor"
class
=
"com.yiibai.TextEditor"
>
<property
name
=
"spellChecker"
>
<bean
id
=
"spellChecker"
class
=
"com.yiibai.SpellChecker"
/>
</property>
</bean>
</beans>

创建源代码和bean配置文件来完成,让我们运行应用程序。如果一切顺利,这将打印以下信息:

 
Inside SpellChecker constructor.
Inside setSpellChecker.
Inside checkSpelling.
原文发布时间为:2018-10-21
本文作者:小白教程
本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“ ”。

转载地址:http://ovwza.baihongyu.com/

你可能感兴趣的文章
解决Oracle 11g在用EXP导出时,空表不能导出
查看>>
对动画队列的初步了解
查看>>
Camera
查看>>
OpenCV教程(41) 人脸特征检测
查看>>
一指流沙,倾覆了谁的年华?
查看>>
Python 初学笔记(转)
查看>>
32位C#程序连接64位ORACLE数据库
查看>>
[LeetCode] Rotate Image [26]
查看>>
微信支付开发(9) 标记客户投诉处理状态
查看>>
Cocos2d-x游戏的场景结构布局
查看>>
MyBean - 单实例插件改进和VCL插件的改进
查看>>
java集合TreeMap应用---求一个字符串中,每一个字母出现的次数
查看>>
windows xp下mysql5.0安装
查看>>
关于OPenGL和OSG的矩阵 (转)
查看>>
译:C#面向对象的基本概念 (Basic C# OOP Concept) 第三部分(多态,抽象类,虚方法,密封类,静态类,接口)...
查看>>
Android 自定义对话框使用静态Handler传递参数
查看>>
深入剖析 linux GCC 4.4 的 STL string
查看>>
ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)
查看>>
Theano3.5-练习之深度卷积网络
查看>>
Android 编译大全
查看>>