`

Spring笔记

 
阅读更多

Spring的ioc容器更像是一个类的容器,帮助用户new出bean的实例,并进行管理。当用户需要使用时,只需要使用一个ApplicationContext的实现类来取出在容器中的类的实例。

 

这个容器的管理方式类似于map,其中每个bean实例都有一个id,用户根据id来获取bean实例。返回的实例都是object类型。

 

三种实例化bean的方法:

 

实例化bean容器的方法:

1、在类路径下寻找;

2、在绝对路径下寻找;

 

 

第二章  装配bean

 

使用类构造器来实例化bean实例  class属性指向需要的bean实例类

静态工厂方法实例化bean(简单工厂模式,抽象工厂方式,工厂方法模式)

对于静态工厂配置方法中的属性中有 class =类的静态工厂类

factory-method=创建bean类实例的方法

因为是静态工厂方法,方法是静态的,无需要创建出一个静态工厂类。

 

使用实例工厂方法模式(工厂方法模式)

 

首先创建一个非静态的工厂

1、声明工厂实例

2、利用工厂bean实例来创建类的实例

其中单独的创建出工厂bean的实例

然后使用factory-bean  和factory-method属性来创建类的实例。

 

 

bean的作用域

表示bean类在ioc容器中new出bean类的方法,是单例,还是非单例的。

单例的则会在bean容器中只保留一个实例

否则,会保留有多个实例。每当用户getBean时,都会new一个bean出来。

 

lazy-init延迟加载则是不是在初始化容器是就初始化实例,而是当使用时才初始化。

 

指定bean的初始化和销毁方法

init-method指定在初始化方法之前处理一些工作

destroy-method指定销毁类是执行的一些方法。

 

 

依赖注入:

1、使用构造器注入

2、使用setter方式注入

3、使用Field放到注入,主要是使用与Autowire方式。

分为自动装配和手工装配

手工装配方式有:

1>在xml文件中写配置

2>使用Autowire方式来注入

 

setter方式注入

 

<bean id="  " class="****">

<property name="" value =""></property>

<property name="" ref=""></property>

</bean>

 

通过构造函数注入:

通过参数类型;

<constructor-arg type="java.lang.String" >

 <value>zhang</value>

</constructor-arg>

<consyructor-arg type="Integer">

<value>1</value>

</constructor-arg>

 

 

 

通过参数顺序:

<constructor-arg index=0 >

 <value>zhang</value>

</constructor-arg>

<consyructor-arg index=1>

<value>1</value>

</constructor-arg>

 

 

使用注解的方式来注入函数:

第一步、需要引入context命名空间

第二步、引入对注解进行处理的处理器

<context:annotation-config>

 

@AutoWire按照类型进行注入,

如果类型不匹配在,则会抛出异常;该注解能应用与字段和属性的set方法上

当该注解应用于字段上时:(使用在set方法类似)

第一步、获取@Autowire字段的标准的类型

第二步、以该类型为基础,到容器中查找类型相同的实例

第三部、利用反射将该节点的实例赋给该变量

@Qualifier(“personDao”表示按照名称进行匹配)其中里面的名称与容器中的id的名称一致。

 

 

@Resource注解方式:

如果指定了按照名称标注,只能按名称注入

如果没有指定,则会退化到按类型注入

 

@Resource按照名称进行注入

 

 

自动装配(不推荐)

 

自动扫描,将classpath中的类加载到容器中

在spring中注解中Resource 和Autowire注解是用来注入变量值的

而@Repository ,@Service@Controller和@Component这些注解是用来扫描空间实例化类的注解。

 

通过扫描空间,将标注了@Component @Service @Controller  @Responsitory等类加入到Spring容器中

<context:component-scan base-package=""></context:component-scan>其中base-package表示目录。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics