Spring框架入手(第一天IOC,DI)

简介

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。专门有一个容器来装对象,每次调用的时候就不需要再new,只需要从容器中拿就行。
在这里插入图片描述
spring的优点:

  • Spring就是一个大工厂,专门负责生成Bean,可以将所有对象创建和依赖关系维护由Spring管理(IOC)
  • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能(AOP)
  • 只需要通过配置就可以完成对事务的管理,而无需手动编程
  • 对JavaEE开发中一些难用的API(JDBC、JavaMail、远程调webservice用等),都提供了封装,使这些API应用难度大大降低

快速入门

  • 下载Spring 开发包
  • 导入Spring的jar包
  • 配置Spring的核心xml文件
  • 在程序中读取Spring的配置文件来获取Bean【Bean其实就是一个new好的对象】

Spring IoC控制反转创建实例

1>写了个配置文件beans.xml
在这里插入图片描述
2.从beans.xml获取bean
在这里插入图片描述
如果创建多次对象会发现,指向同一个内存对象
总结:IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架

Dependency Injection 依赖注入

在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件。
在这里插入图片描述
在这里插入图片描述

加载Spring容器的三种方式

类路径获得配置文件(主动加载)
文件系统路径获得配置文件
使用BeanFactory(了解)(延时加载)

spring内部创建对象的原理:

1.解析xml文件,获取类名,id,属性
2.通过反射,用类型创建对象
3.给创建的对象赋值

实例化Bean的三种方式

1.使用构造方法实例化
在这里插入图片描述
2.使用静态工厂方法实例化
在这里插入图片描述
3.使用实例工厂方法实例化
在这里插入图片描述

bean的作用域

singleton:在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值
prototype:每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时 ,相当于执行new XxxBean()

bean的生命周期

在这里插入图片描述
1.instantiate bean对象实例化
2.populate properties 封装属性
3.如果Bean实现BeanNameAware 执行 setBeanName
4.如果Bean实现BeanFactoryAware 执行setBeanFactory

获取Spring容器

5.如果存在类实现 BeanPostProcessor(预处理Bean) ,执行postProcessBeforeInitialization,假如对多个对象做相同事情的处理可以使用
6.如果Bean实现InitializingBean 执行 afterPropertiesSet
7.调用 指定初始化方法 init
8.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessAfterInitialization

执行业务处理

9.如果Bean实现 DisposableBean 执行 destroy
10.调用 指定销毁方法 customerDestroy

集合注入

集合的注入都是给添加子标签
数组:< array>
List: < list>
Set:< set>
Map:< map> ,map存放k/v 键值对,使用< entry>描述
Properties:< props> < prop key=""></ prop>

注解注入

注解:就是一个类,使用@注解名称,用来取代 xml配置文件

@Component

@component取代
@Component(“id”)取代
在这里插入图片描述
在这里插入图片描述

web开发,提供3个@Component注解衍生注解

@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层
在这里插入图片描述
在这里插入图片描述
注意:这里不用components注解而是具体用了这三个注解主要是因为依赖注入的顺序问题,执行的顺序为@Repository–>@Service–>@Controller
假如以上设置过id
@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称
或:@Resource(“名称”)
在这里插入图片描述
@Autowired是根据类型注入值,比较方便,所以最常用!!

@Scope

单例singleton或多例prototype

@ PostConstruct 自定义初始化

@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值