『硬核』Spring完整版学习笔记,动力节点王鹤

第一章 Spring 概述

1.1. 什么是spring

spring就是一个java框架,使用java语言开发的, 轻量级的, 开源的框架。 可以在j2se、j2ee项目中都可以使用。

spring核心技术: ioc, aop

spring又叫做:容器, spring作为容器, 装的是java对象。 可以让spring创建java对象, 给属性赋值。

spring作用: 实现解耦合, 解决java对象之间的耦合, 解决模块之间的耦合。

tomcat也是容器:管理的是servlet, listener, filter等对象。

创建HelloServlet 类, 写web.

spring:创建SomeServiceImpl, 写spring的配置文件

1.2 spring的地址

1.3 Spring优点

Spring 是一个框架,是一个半成品的软件。有 20 个模块组成。它是一个容器管理对象,容器是装东西的,Spring 容器不装文本,数字。装的是对象。Spring 是存储对象的容器。
(1) 轻量
Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring核心功能的所需的 jar 总共在 3M 左右。
Spring 框架运行占用的资源少,运行效率高。不依赖其他 jar

(2) 针对接口编程,解耦合
Spring 提供了 Ioc 控制反转,由容器管理对象,对象的依赖关系。原来在程序代码中的对象创建方式,现在由容器完成。对象之间的依赖解耦合。

(3) AOP 编程的支持
通过 Spring 提供的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付在 Spring 中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

(4) 方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,相反 Spring 可以降低各种框架的使用难度,Spring 提供了对各种优秀框架(如 Struts,Hibernate、MyBatis)等的直接支持。简化框架的使用。Spring 像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把这个插头放入插线板。不需要可以轻易的移除。

第二章 IoC 控制反转

2.1 IoC 概念

IoC,Inversion of Control : 控制反转, 是一个理论,一个指导思想。 指导开发人员如何使用对象,管理对象的。 把对象的创建,属性赋值,对象的声明周期都交给代码之外的容器管理。

1 ) IoC分为 控制和反转

控制: 对象创建,属性赋值, 对象声明周期管理

反转:把开发人员管理对象的权限转移给了代码之外的容器实现。 由容器完成对象的管理。

正转:开发人员在代码中, 使用 new 构造方法创建对象。 开发人员掌握了对象的创建,属性赋值,对象从开始到销毁的全部过程。 开发人员有对 对象 全部控制。

通过容器,可以使用容器中的对象(容器已经创建了对象, 对象属性赋值了, 对象也组装好了)。

Spring就是一个容器,可以管理对象,创建对象,给属性赋值。

2 ) IoC的技术实现

DI ( 依赖注入) :Dependency Injection, 缩写是DI . 是IoC的一种技术实现。 程序只需要提供要使用的对象的名称就可以了, 对象如何创建, 如何从容器中查找,获取都由容器内部自己实现。

依赖名词: 比如说ClassA类使用了ClassB的属性或者方法,叫做ClassA依赖ClassB.

public class ClassB{
 
 public void createOrder(){}
}

public class ClassA{
 //属性
 private ClassB b = new ClassB();
 
 public void buy(){
  b.createOrder();
 }
}

执行ClassA的buy()
ClassA a = new ClassA();
a.buy();

3 ) Spring框架使用的DI实现IoC.

通过spring框架, 只需要提供要使用的对象名词就可以了。 从容器中获取名称对应的对象。

spring底层使用的 反射机制, 通过反射创建对象,给属性。

2.2 Spring的配置文件

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

</beans>

spring标准的配置文件:
1)根标签是 beans
2) beans 后面的是约束文件说明
3)beans里面是bean声明。
4)什么是bean: bean就是java对象, spring容器管理的java对象,叫做bean

2.3 spring容器创建对象的特点

2.4 DI:给属性赋值。

spring调用类的无参数构造方法,创建对象。 对象创建后给属性赋值。

给属性赋值可以使用 1)

DI分类:

1、 set注入,也叫做设值注入 ;
2、 构造注入。

2.4.1 基于

1) set注入,也叫做设值注入。

概念: spring调用类中的set方法,在set方法中可以完成属性赋值。 推荐使用。

简单类型的设值注入,使用value
<bean id="mySchool" class="com.bjpowernode.ba02.School">
 <property name="name" value="北京大学"/>
 <property name="address" value="北京的海淀区"/>
</bean>

<!--引用类型set注入-->
<bean id="myStudent" class="com.bjpowernode.ba02.Student">
 <property name="name" value="李四"/>
 <property name="age" value="22" />
 <!--引用类型的赋值-->
 <property name="school" ref="mySchool" /><!--setSchool(mySchool)-->
</bean>

2) 构造注入

构造注入:spring调用类中的有参数构造方法, 在创建对象的同时,给属性赋值

<!--构造注入,使用name属性-->
<bean id="myStudent" class="com.bjpowernode.ba03.Student">
 <constructor-arg name="myage" value="22" />
 <constructor-arg name="myname" value="李四"/>
 <constructor-arg name="mySchool" ref="mySchool"/>
</bean>

<!--构造注入,使用index,参数的位置,构造方法参数从左往右位置是0,1,2-->
<bean id="myStudent2" class="com.bjpowernode.ba03.Student">
 <constructor-arg index="1" value="28"/>
 <constructor-arg index="0" value="张三"/>
 <constructor-arg index="2" ref="mySchool" />
</bean>


<!--构造注入,省略index属性-->
<bean id="myStudent3" class="com.bjpowernode.ba03.Student">
 <constructor-arg value="张峰"/>
 <constructor-arg value="28"/>
 <constructor-arg ref="mySchool" />
</bean>

3)引用类型的自动注入

概念: spring可以根据某些规则给引用类型完成赋值。 只对引用类型有效。 规则byName, byType.

①:byName(按名称注入): java类中引用类型属性名称和spring容器中bean的id名称一样的,且数据类型也是一样的,这些bean能够赋值给引用类型。

<!-- byName 自动注入 -->
<bean id="myStudent" class="com.bjpowernode.ba04.Student" autowire="byName">
 <property name="name" value="李四"/>
 <property name="age" value="22" />
 <!--引用类型的赋值-->
 <!--<property name="school" ref="mySchool" />-->
</bean>

②:byType(按类型注入):java类中引用类型的数据类型和s

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值