- 怎么学框架
-
知道框架能做什么
-
框架的语法
-
会用后 以后在考虑内部实现
-
通过以上步骤 可以自己实现一个框架
一、概述
1. 框架是什么
-
Spring 是一个容器 管理对象,属性赋值,底层使用反射机制
-
主要是解决企业开发难度
-
模块之间,类之间的管理解耦合 解决对象之间的关系
-
核心技术 ioc aop
2. 优点
-
轻量
-
针对接口编程 解耦合
-
支持AOP 面向切面编程
-
方便集成其他框架 像插座
3. Spring体系结构
数据访问 Web AOP 集成 容器 测试
二、 IOC控制反转
1. 为什么使用IOC:
目的减少代码的改动,也能实现不同功能 解耦合
2. IOC(控制反转)是一个思想。
-
控制:对象的创建,赋值,对象关系之间的管理
-
反转:把开发人员new对象的权利 转移给容器实现
-
正转:开发人员使用代码中 new对象
-
容器:是一个服务器软件,一个框架(Spring)
3. IOC的技术实现:
DI实现IOC的功能
DI:依赖注入 只需提供对象的名称 对象创建、赋值等 由容器内部实现
三、 入门案例
1. 加入依赖
<!--//Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2.创建类(接口和实现类)
service包下创建接口 imp包下实现类
3. 创建Spring配置文件
<!--在资源目录下 要创建Spring的xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!--beans:根标签 spring把java对象成bean-->
<!--spring-beans.xsd:格式约束文件-->
<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.xsd">
<!-- 声明bean 告诉spring创建对象
id:自定义名 spring通过这个名找到对象
class:全限定名称(不能是接口 必须类)-->
<bean id="some" class="com.baidu.service.imp.SomeServiceImp"/>
</beans>
4. 测试使用对象
//ApplicationContext:是Spring的容器 通过容器获取对象
//ClassPathXmlApplicationContext:类路径加载Spring配置文件
ApplicationContext app =
new ClassPathXmlApplicationContext("beans.xml");
?
//getBean方法:获取
xxxx xx =
(xxxx)app.getBean("配置文件中的bean的id");
5. 注意点:
spirng: 创建对象的时间:创建spring的容器时,创建beans的所有对象
spring: 默认调用无参构造
获取容器中对象的信息api:
getBeanDefinitionCount(): 获取定义的对象数量
getBeanDefinitionNames():获取所有定义对象的名称
四、 DI实现语法
1. 通过spring完成 属性赋值
基本类型和String在这属于简单类型
引用
1.1 基于XML的DI实现
spring 配置文件中,使用标签和属性
set注入
spring 调用类的set方法 必须有
//在spring配置文件bean中为属性赋值
//实际调用set方法
<property name="属性名" value="值 都要加引号"/>
?
//引用类型
<property name="属性名" ref="time"/>
<bean id="time" class="java.util.Date"/>
构造注入
调用类的有参构造方法
<constructor-arg
name="构造方法的新参名"
index="从0开始 构造方法参数位置"
ref="引用"
value="简单类型值"/>
//还有个省略index 但是要按方法参数位置
1.2 基于注解的DI实现
spring 配置文件中,使用spring的注解
1.3 引用类型自动注入
byName(按名注入):
//类的属性名和spring配置文件bean id名一致 类型一致
<bean id=""class="" autowire="byName">
//简单类型赋值 引用自动
</bean>
byType(按类型注入):
//spring配置文件bean class类型一致或父子接口类关系
//唯一bean
<bean id=""class="" autowire="byType">
//简单类型赋值 引用自动
</bean>
1.4 多个配置
1.优点
-
文件小 效率高
-
避免多人使用冲突
-
按类的功能
2.使用
//创建一个Srping主配置文件total.xml
//里面包含其他配置文件spring-*.xml
//一般不定义对象
<import resoutce = "classpath:路径.xml">
//可以使用通配符*
//不能包含total.xml
//需要在目录下才能使用
<import resoutce = "classpath:spring-*.xml">