Spring入门-学习笔记

Spring入门

依赖注入:

1:外部文件注入(也算是接口注入):利用借口将调用者与实现者分离


Properties props = new Properties();

props.load(new FileInputStream("资源位置(在项目中)"));

 xxxx = Class.forName(props.getProperty(键名)).newInstance();


 在Properties配置文件中,以=分割键值对,=前面为key,后面为value

2:set注入

将依赖的对象通过set方法注入具体的对象实例;

3:构造注入

在创建这个对象的时候就将依赖对象注入;可以构造出更加严谨的,可用的对象

set注入和构造注入的优缺点
- set注入容器不会检测,要调用依赖对象的时候才问把问题揭露出来
- 构造注入会在得到对象的时候就会把问题暴漏出来。
- 更加符合java程序员的习惯:当可注入的属性非常多,但又不是必须要注入时,非常方便;

必须要放进去,不放进去就不能运行的方法使用构造注入;


IOC(inversion of control):反转控制

DI (dependecy injection) : 协调各组件间的相互的依赖关系,同时大大提高了组件的可移植性;

spring容器

一、容器
Bean工厂: 有BeanFactory,以及ApplicationContext两大派系,懒加载对象;
ClassPathResource()//当前类包下的资源
容器中的对象只有一个(同一个bean源)

Context更强大(在读取配置文件的时候就创建对象【预加载单态Bean】)
提供文本信息解析,支持I18N
提供载入文件资源的通用方法
向注册为监听器的Bean发送事件

如何启动容器?
直接使用new创建容器对象,例如 new ClassPathApplicationContext(“xxx.xml”)【读取配置文件】
一般把存在依赖关系的==【单态】==对象放入容器;

二者区别
- ApplicationContext接口继承BeanFactory
- AppContext提供附加功能
- 预加载所有的“==单态==”Bean但默认只实例化一起,如果要修改,添加XML属性scope=”prototype”; BeanFactory延迟加载所有的Bean,直到getBean调用;

IOC(反转控制: 将对象的创建以及对象间依赖关系的维护,交由第三方容器来管理–对象创建控制权反转)
DI:依赖注入【对象之间的依赖关系,由外部注入,维护】

二、AOP
三、整合

Spring配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


<bean id="类在配置文件中的名字" class="com.wang.model.Computer" scope="设置原型prototype还是单态singleton" init-method="初始化的时候要调用的方法名" de>
类还可以通过实现InitializingBean接口重写执行初始化方法(在装配好Bean各种依赖关系以及参数后调用该方法)
可以实现DisposableBean接口重写执行摧毁方法

<!--set的依赖注入语句

<property name="方法名" ref="md"></property>-->

<!--构造器依赖注入,index表示参数的顺序-->

<constructor-arg ref="参考的bean的id" index="0">
不要ref还可这样写,卸载property之间或者constructor-arg之间
<bean class=""></bean>
</constructor-arg>
<property name="属性名" value="基本数据类型直接用value注入(注意要有set方法)"><value>value还可以这样写基本数据类型及包装类型</value></property>

<property name="属性名" >
<bean class=""></bean>
</property>

<!--集合注入-->
<property name="属性名" >
<list>
<value>String</value>
<value>int</value>
<ref bean="objId"></ref>
</list>
</property>


</bean>
<!-- 可能产生依赖的被依赖类实例反射 -->

 <bean id="flashDisk" class="com.wang.model.UDisk"></bean>
 <bean id="md" class="com.wang.model.MoveDisk"></bean>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值