Spring框架中的IoC/DI和AOP初学小结

一,Spring是一个以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为内核的框架。

1,如下图:IoC理论上是借助于“第三方”实现具有依赖关系对象之间的解耦,即把各个对象类封装之后,通过IoC容器来关联这些对象类,这样对象与对象之间就没有什么直接的联系了。

2,IoC的两个核心容器:BeanFactory和ApplicationContext.
3,IoC的两种实现方式:setter(设置)注入和构造方法注入
4,IoC的主要组件
1)Beans:就是常见的javaBean,java类,类和bean 一一对应
2)配置文件applicationContext.xml(Bean的装配)
3)BeanFactory接口及其实现类
4)ApplicationContext接口及其实现类

插播:应用程序一般分为4层,即应用层,web表示层(一般使用struts2或springMVC框架),业务层Service(一般使用Spring框架)数据访问层Dao(一般使用Hibernate或MyBatis框架)

5,Bean的作用域
1)singleton:无论有多少其他的bean来引用,作用域(scope)为singleton(单例)的 bean 都只返回同一个 bean 实例
2)prototype:无论是不是被同一个其他的bean引用,作用域为prototype(原型)的 bean 都会返回一个新建的 bean 实例
3)request
4)session
5)globalSession
6)application
7)websocket

6,Bean 的装配方式(重点
Bean 的装配方式有三种:
1)基于 XML 的装配:有设置注入(property)和构造注入(constructor_arg)两种方式
2)基于 Annotation 的装配
3)自动装配
设置注入要求:
1)Bean 类即普通 Java类必须提供一个默认的无参构造方法
2)Bean 类必须为需要注入值的属性提供对应的setter()方法

Annotation装配常用注解(7个):
@Repository 作用于数据访问层
@Service 作用于业务层
@Controller 作用于控制层
@Component
上面四个注解都是用于将类表示为配置文件中的bean实例
@Autowired 默认按Bean类型进行装配
@Resource 默认按Bean实例名称进行装配,主要有两个属性name表示bean实例名称,type表示bean类型
@Qualifier 配合@Autowired注解使用,修改Bean类型装配为Bean实例名称装配
其中@Resource注解与XML装配中的property子元素和consturctor_arg子元素作用类似,都是用来为java类的属性装配属性值的

7,三种Bean实例装配的配置文件的异同小析
XML装配
1)为每一个java类一一配置对应的bean
2)需要使用constructor_arg子元素(构造注入)或property子元素(设置注入)为bean实例的属性装配属性值
Annotation装配:
方式一:开启注解处理器<context:annotation-config/>,然后为java类一一配置对应的bean实例,不需要再在配置文件里为bean实例的属性注入值,以为已经用@Resource注解注入了
方式二:连bean实例也不用在配置了,直接扫描包下的所有bean实例,配置文件中只需要一个声明即<context:component-scan base-package=”bean所在的包路径“
自动装配:
同XML装配一样 只需要在配置文件中写java类对应的bean实例即可,但是bean实例中的属性的属性值注入方式变了,改为使用<bean>元素的属性“autowire”来注入

从配置文件上来看,三种配置方式中自动配置效率最高,而基于XML装配的方式效率最低

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值