spring : 轻量级,一站式的企业应用框架
设计理念: 面向Bean的编程
核心思想:
One: 依赖注入:(Ioc和Di) 控制反转和依赖注入
Two:面向切面编程: Aop
有点:
1/低侵入式设计
2/独立于各种应用服务器
3/依赖注入特性将组建透明化 降低了耦合
—>对象和对象之间,在发生调用关系的时候 ,这种调用关系是交给ioc容器进行的, 作为使用者不在关心被调用者是怎么实现的,我们集中精力关注调用者内部是怎么实现…….后边会补充本块儿内容….
4/ 面向切面编程特性允许将通用任务集中处理
5/与第三方框架的良好整合
Ioc:的定义和原理
将组件的控制权从代码本身转交给外部容器
组件化的思想:分离关注点,使用接口 不在关注实现
比如:
传统版本:创建A类 在A类中调用B类的时候 ,需要New一个B的对象
这个时候就是A类在获取B类的控制权,
工厂模式:根据需要创建对象实例,为我们返回所需的产品
1/产品的规范
2/产品
3/工厂
4/客户端调用
案例:
引入spring的四个包 core Context Expression beans
1/创建类
2/创建Application.cfg.xml
3/配置Bean
<!--声明spring创建的对象实例,id属性指定对象的标识符, Class属性指定被声明的实例的类-->
<bean id="hellospring" class="HelloSpring">
<!--指定属性名字 ,对应方法里的SetXXX的XXX-->
<property name="who">
<!--指定被复制的内容-->
<value>Spring ASDFASDFADS FASD</value>
</property>
</bean>
依赖注入的方式有: P命名空间注入属性值 前提在xml中导入
xmlns:p = “http://www.springframework .org/schema/p
在注入属性值的时候 格式如下
p:属性名 = 值
p:属性名-ref = bean的id
设值注入及多种情况
1/ 当遇到特殊字符需要注入属性值的时候 ,
<property name="who">
<!--指定被复制的内容-->
<value><![CDATA[D&A]]></value>
</property>
还可以将特殊字符转化为实体引用 . [这里写链接内容](https://www.cnblogs.com/garinzhang/p/spring_Special_char_encode.html)
2/集合数组注入 标签是
内部value有多组 还有等
与list集合对应的标签
同样 map 集合注入 对应标签
set集合 <set>
properties类型数据 注入 用
<props>
<prop key="">XXX </prop>
</props>
3/构造注入,
与设值注入不同的是他神根据有参的构造方法实例的
时效性比之要好一些
构造注入中 index 尚需经确定参数位置
特殊情况是 还可以用type指定传入的参数数据类型
构造注入 灵活性要比 设值注入差
4/注解注入;
此处后边补充.