JavaEE第三章基础知识点

1.Spring IoC容器可以创建、装配和配置应用组件对象,此处组件对象称为Bean(数据源、事务管理器...)

Bean的配置(XML文件):XML文件中根元素是<beans>,<beans>中包含多个<bean>子元素,每个<bean>元素定义一个Bean,并描述Bean如何被装配到Spring容器之中

idBean在BeanFactory中的唯一标识,在代码中通过BeanFactory获取Bean实例时,需要借此作为索引名称
classBean的具体实现类,使用的类的名字

Bean实例化:Spring框架中如果想要使用Bean,需要先实例化Bean

Spring实例化三种方式:构造方法实例化、静态工厂实例化、实例工厂实例化(其中常用方法是构造方法实例化

a.构造方法实例化:Spring调用Bean对应类中的无参数构造方法来实例化Bean

b.静态工厂实例化:开发者在工厂类中需要创建一个静态方法来创建Bean的实例,在配置Bean时,class属性需要指定静态工厂类,同时还需要使用factory-method属性来指定工厂类中的静态方法

c.实例工厂实例化:开发者在工厂类中需要创建一个实例方法来创建Bean的实例,在配置Bean时,需要使用factory-bean属性指定配置的实例工厂,同时还需要使用factory-method属性指定实力工厂中的实例方法

2.Bean的作用域

singleton默认的作用域,使用此定义的Bean在Spring容器中将只有一个Bean实例
prototypeSpring容器每次获取prototype定义的Bean,容器都将创建一个新的Bean实例

singleton作用域(默认作用域)

配置文件可以写成

<bean id="xxx" class="xxx" >    //scope默认为singleton
<bean id="xxx" class="xxx" scope="singleton">   //指定范围为singleton 

使用id或name获取Bean实例时,IoC容器返回的始终是同一个Bean实例

prototype作用域:

配置文件<bean id="xxx" class="xxx" scope="prototype">

每次使用id或name获取Bean实例时,返回的都是不同的Bean实例

3.Bean的生命周期

a.根据Bean配置情况实例化一个Bean

b.根据Spring上下文对实例化的Bean进行依赖注入(即对Bean的属性进行初始化)

c.根据Bean实现的接口(BeanNameAware/BeanFactoryAware/ApplicationContextAware/BeanPostProcessor/InitializingBean...),调用对应的方法,完成对应的操作

d.如果实现了DisposableBean接口,则调用其实现的destory方法将Spring中的Bean销毁

如果在配置文件中通过了destory-method属性指定了Bean的销毁方法,将调用配置其配置的销毁方法进行销毁

整个生命周期:实例化——初始化——接受请求——销毁

4.Bean的装配方式

将Bean的依赖注入到Spring中,Bean的装配方式即Bean的依赖注入方式

Spring容器支持XML配置的装配、基于注解的装配、自动装配等多种装配方式

基于XML配置的装配:a.使用构造方法注入;b.使用属性的setter方法注入

a.构造方法注入:Bean的实现类需要提供带参数的构造方法,并在配置文件中使用<bean>元素的子元素<constructor-arg>来定义构造方法的参数;

b.属性的setter方法注入:Bean的实现类需要提供一个默认无参数的构造方法,并为需要注入的属性提供对应的setter方法,另外需要使用<bean>元素的子元素<property>为每个属性值注入值

基于注解的装配(应用中Bean对象过多的话,使用基于XML配置的装配会导致XML配置文件过大):

@Component

一个泛化的概念,仅表示一个组件对象(Bean)可以作用在任何层次上

创建Bean的实现类

@Component()

//相当于@Component("annotationUser")或@Component(value="annotationUser")

public class AnnotationUser{
        ...//变量及访问和修改方法

}

@Repository用于将数据访问层(DAO)的类标识为Bean,即注解数据访问层,功能与@Component相同
@Service用于标注一个业务逻辑组件类(Service层),其功能与@Component相同
@Controller用于标注一个控制器组件类(Spring MVC的Controller),其功能与@Component相同
@AutoWired该注解可以对类成员变量、方法、构造方法进行标注,完成自动装配的工作,通过使用@AutoWried消除setter和getter方法,默认按照Bean的类型进行装配
@Resource

注解与@AutoWired功能一样,区别在于此注解默认是按照名称来装配注入,只有找不到与名称匹配的Bean才会按照Bean类型来进行装配注入;@AutoWried默认按照Bean的类型来进行装配(若要按照名称来进行装配注入,则需要与@Qualifier一起使用)

@Resource注解有两个属性——name和type,name属性指定Bean实例名称(按照名称来进行装配注入),type指定Bean类型(按照Bean类型来进行装配注入)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值