Spring

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

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

**IOC控制反转** 

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

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

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

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

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

1、set方法进行注入

2、构造器注入

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

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

比如:

类:class 类名{

public List lists;

public 类名 对象;

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

this.lists=lists;

this.对象=对象;

}

}

配置文件

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

<propertyname="引入类名"> 

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

property>

<propertyname="Lists">

<value>list1value>

<value>list2value>

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

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

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

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

你可能感兴趣的:(spring)