Spring学习笔记

传统的对象创建及维护是由应用对象本身维护及创建。

public class PersonService {
private PersonDao personDao=new PersonDaoImpl();
public void save(Person person){
personDao.save(person);
}
}



那么所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责额。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。

所谓依赖注入是指:[color=red]在运行期[/color],由外部容器动态地将依赖对象注入到组件中。

那么使用Spring有什么好处呢?
1.降低了组件之间的耦合度,实现各层之间的解耦。
2.可以使用容器提供的众多服务。
3.容器提供了单例模式的支持,不需要自己手写实现代码,提高了开发效率。
4.提供AOP,很容易实现如权限拦截,运行监控等功能。
5.提供了众多的辅助类,能够加快应用的开发,如jdbcTemplate,hibernateTemplate等。
6.对主流的应用框架进行了集成,如struts,hibernate等。

实例化Spring容器有2种方式:
1.在类路径下寻找配置文件来实例化容器
ApplicationContext ctx=new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
2.在文件路径下寻找配置文件来实例化容器(不推荐使用)
ApplicationContext ctx=new FileSystemXmlApplcationContext(new String[]{"d:\\spring.xml"});

ps:Spring的配置文件可以指定多个,可以通过String数组传入

三种实例化bean的方法
1.使用类构造器实例化

<bean id="xxx" class="xxx">

2.使用静态工厂方法实例化

<!--factory-method工厂方法名 -->
<bean id="xxx" class="xxx" factory-method="method">

3.使用工厂方法实例化
<bean id="xxxFactory" class="xxxx"/>
<bean id="xxx" factory-bean="xxxFactory" factory-method=""/>

bean的作用域:
1.singleton
在IOC容器中bean只定义一个对象实例,默认情况下会在容器启动时初始化bean,但我们可以指定bean的lazy-init=true来延迟初始化bean,这时候,只有第一次获取bean才会被初始化。
如果想对所有bean都延迟初始化,可以在跟节点beans设置defaul-lazy-init="true",如果想在方法中打开某些特定的资源,可以配置init-method="init"方法,如果想在bean销毁之前关闭特定的资源destory-method="destory"
2.prototype
每次从bean都获取新的对象,第一次获取bean时才被初始化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值