Spring依赖其IOC特征
![](/icons/52297dou.gif)
轻松
![](/icons/52297de.gif)
管理着
![](/icons/52297yi.gif)
堆非常有价值
![](/icons/52297de.gif)
bean,这些bean在spring容器中
![](/icons/52297de.gif)
依赖关系都已注入好
![](/icons/52297dou.gif)
所以相互
![](/icons/52297diaoyong.gif)
非常方便
![](/icons/52297dou2.gif)
但既然是有价值
![](/icons/52297de.gif)
bean
![](/icons/52297dou.gif)
我们就想在Java代码
![](/icons/52297de.gif)
各处都能
![](/icons/52297diaoyong.gif)
![](/icons/52297dou.gif)
实际中
![](/icons/52297de.gif)
确有这样
![](/icons/52297de.gif)
场景
![](/icons/52297dou.gif)
比如:
Struts
![](/icons/52297de.gif)
action要用其中
![](/icons/52297de.gif)
service;
充血领域模型
![](/icons/52297de.gif)
Hibernate实体会需要dao
![](/icons/52297dou2.gif)
要
![](/icons/52297diaoyong.gif)
这些bean
![](/icons/52297dou.gif)
现在也确实有很多做法:
以下代码描述
![](/icons/52297de.gif)
方式
![](/icons/52297dou.gif)
被称为bad smell
![](/icons/52297dou.gif)
是最不自然
![](/icons/52297de.gif)
方式
![](/icons/52297dou.gif)
不被提倡;
JDBCDao jdbcDao = (JdbcDao)springContext.getBean("jdbcDao");
自然
![](/icons/52297de.gif)
![](/icons/52297diaoyong.gif)
方式是
![](/icons/52297dou.gif)
你
![](/icons/52297diaoyong.gif)
![](/icons/52297de.gif)
bean
![](/icons/52297dou.gif)
也是注入
![](/icons/52297de.gif)
:
struts2是通过
![](/icons/52297yi.gif)
个spring plugin来做到
![](/icons/52297de.gif)
;
hibernate就没那么简单了
![](/icons/52297dou.gif)
要用到annotation声明
![](/icons/52297dou.gif)
要什么ASPectJ织入
![](/icons/52297dou.gif)
概念复杂
![](/icons/52297dou.gif)
麻烦的极;
我有
![](/icons/52297yi.gif)
个简单
![](/icons/52297de.gif)
做法
![](/icons/52297dou.gif)
至少对单件
![](/icons/52297de.gif)
bean很可行(
![](/icons/52297yi.gif)
般我们需要
![](/icons/52297de.gif)
bean也就是单件
![](/icons/52297de.gif)
)
![](/icons/52297dou2.gif)
思路很简单
![](/icons/52297dou.gif)
依靠spring
![](/icons/52297de.gif)
注入机制
![](/icons/52297dou.gif)
把容器内
![](/icons/52297de.gif)
bean注入为静态变量
![](/icons/52297dou2.gif)
而静态变量天然就是各处可用
![](/icons/52297de.gif)
![](/icons/52297dou2.gif)
以下是代码:
Java:
public
![](/icons/52297class.gif)
JdbcDao {
//静态变量
private
![](/icons/52297static.gif)
JdbcDao instance;
//静态思路方法
![](/icons/52297dou.gif)
获取单件对象
public
![](/icons/52297static.gif)
JdbcDao get
![](/icons/52297kh.gif)
{
![](/icons/52297return.gif)
instance;
}
//对象思路方法
![](/icons/52297dou.gif)
注入到静态变量
public void
![](/icons/52297set.gif)
Instance(JdbcDao _inst){
instance = _inst;
}
public List query(String sql){
....
}
}
spring配置,将自身注入:
<bean id="jdbcDao"
![](/icons/52297class.gif)
="net.jacker.dao.JdbcDao">
![](http://www.crazycoder.cn/WebFiles/20098/ff70ae91-ad17-4f21-ac23-43906009ee71.g<img src='/icons/52297if.gif' />)
<property name="instance">
<ref bean="jdbcDao" />
</property>
![](http://www.crazycoder.cn/WebFiles/20098/ff70ae91-ad17-4f21-ac23-43906009ee71.g<img src='/icons/52297if.gif' />)
</bean>
这样
![](/icons/52297dou.gif)
只要spring容器启动
![](/icons/52297dou.gif)
构造好bean后
![](/icons/52297dou.gif)
就会自行将其注入到静态变量
![](/icons/52297dou.gif)
然后在各处
![](/icons/52297de.gif)
![](/icons/52297diaoyong.gif)
就很简单了:
public
![](/icons/52297class.gif)
UserAction {
JdbcDao jdbcDao = JdbcDao.get
![](/icons/52297kh.gif)
;
public String execute
![](/icons/52297kh.gif)
{
jdbcDao.query
![](/icons/52297kh.gif)
;
}
...
}
注:网上有
![](/icons/52297yi.gif)
些思路也是从静态变量入手
![](/icons/52297de.gif)
![](/icons/52297dou.gif)
但做法有所区别
![](/icons/52297dou.gif)
有
![](/icons/52297de.gif)
需要依赖Web容器
![](/icons/52297dou.gif)
就不多做介绍了
![](/icons/52297dou2.gif)
最后要说
![](/icons/52297de.gif)
就是
![](/icons/52297dou.gif)
这也是单件模式
![](/icons/52297de.gif)
![](/icons/52297yi.gif)
种实现
![](/icons/52297dou.gif)
使用spring容器配置注入好你
![](/icons/52297de.gif)
单件对象
![](/icons/52297dou.gif)
并在任何地方使用的
延伸阅读
最新评论