Spring

  • 这两天研究了一下spring开源框架,在这里做个笔记,过段时间可以回来看看有什么错误。

spring主要的功能就是ioc控制反转和aop面向切面编程,着我们都知道,spring2.5的api文档里面也有详细解释。但是里面的解释看着云里雾里真的是看不懂,所有就实际搭建两个框架测试一下了。

**IOC控制反转** 

什么是**控制反转**呢?说白了就是讲bean的创建、调用和销毁等操作都交由spring框架来实现。这样做有什么好处呢?我们在实现一个类功能的时候,肯定会依赖很多其他类来实现,一般都是new一个实例来使用,这样依赖代码的耦合度就变高,而且将功能实现类直接暴露给使用者,后期更改的时候很麻烦。

使用控制反转就不需要我们手动去创建实例来调用,而是将实例的创建交由给spring实现,我们只需要关心这个bean实现的功能是什么就可以。

控制反转的功能还是要体现在依赖注入功能里面。

依赖注入通俗解释,就是为类的成员变量赋值。一般我们依赖某个接口的时候,直接将接口注入进来,至于接口具体由那个实现类来实现,我们并不关心,这就是面向接口编程的思想。

spring依赖注入的方式,我用过的有三种。

1、set方法进行注入

2、构造器注入

3、注解的方式自动扫描、自动注入

set方法:通过set方法对引入的接口类型的属性进行初始化,初始化的实际操作在配置文件中,也就是<bean>标签下面的属性赋值。

比如:

类:class 类名{

public List lists;

public 类名 对象;

public void set(List lists,类名 对象){

this.lists=lists;

this.对象=对象;

}

}

配置文件

<beanid="名字"class="类路径">  

<propertyname="引入类名"> 

<refbean="引入类实体bean名"/>  

</property>

<propertyname="Lists">

<value>list1</value>

<value>list2</value>

</property>

</bean>

构造器注入:

class 类{

public void 构造器(类名 对象名){

this.对象名=对象名;}}

配置文件:

<beanid=""class="">

<constructor-argindex="0"ref="类路径"value="引入类id名"></constructor-arg>

</bean>

注解的方式注入: 当一个项目有几千个类的时候,再使用配置文件创建bean对象的方式就太麻烦了,而且配置文件也会很臃肿。所有2.5版本出现了注解的方式。通过配置文件自动扫描包,将有注解的类都扫描并创建实体bean。当我们想注入类的时候,直接注解就可以了。

<!-- 自动扫描与装配 --><context:component-scanbase-package="com.forlink"></context:component-scan>

依赖注入

@Resource

@Autowired

@Qualifier

类扫描

@Component

@Controller

@Repository

@Service

几种方法的优劣都很明显,配置文件的方法加载速度很快,但是写起来很麻烦,而且有些属性不适合注入。

注解的方式很方便,用起来很爽,但是加载速度稍慢。我们公司现在用的就是自动扫描注解的方式实现的。

控制反转和依赖注入就是面向接口编程,松耦合编程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值