Spring Framework 5 框架系列
概念
-
什么是Spring?
- Spring 是一个轻量级的*(对象)*控制翻转(IOC/DI)和面向切面编程(AOP)的对象容器框架;
- 极大简化开发过程,降低开发难度;
-
什么是控制翻转(IOC)?
Spring 用户相当于窃取 Spring 成果的存在
举例:
我 想要生一个孩子
我 需要付出的代价是:生孩子、喂奶、教他读书……
我 生孩子的目的是:玩儿、洗完、赚钱、养老……
现在有一个第三方机构,可以帮我完成生孩子所付出的代价,也就是可以替我生产、喂奶、教学
所以我只要等着玩孩子、让他洗碗、赚钱就可以了
-
什么是 依赖注入(DI) ?
- 对象
new
出来之后,由Spring
来决定set
跟get
IOC
是思想,DI
是解决方案
- 对象
-
下载
- 官网(文档最底部)下载最新版的
dist
压缩包
- 官网(文档最底部)下载最新版的
五个核心 jar 包
commons-logging-1.2.jar
spring-beans-5.1.7.RELEASE.jar
spring-context-5.1.7.RELEASE.jar
spring-core-5.1.7.RELEASE.jar
spring-expression-5.1.7.RELEASE.jar
commons-lang.3.3.9.jar 需要自己下载
控制翻转 IOC 依赖注入 DI
- 引用核心类
public class TestGetBean{
public static void main(String[] args){
// 原始方法 创建对象
Person p = new Person();
p.setAge(18);
// 控制翻转后 创建对象
ClsssPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// ↑ ↑ 通过 ClassPath 查找 xml 文件 applicationContext.xml
// ↑ ↑ 通过 ApplicationContext(应用程序上下文) 查找 应用程序上下文
// 有了上面两个就可以通过 ctx 进行 getBean 了
Object bean = (Person)ctx.getBean("person");
bean.setAge(18);
bean.setName("张三");
// -------- 分割线 ---------
Sout(bean.getName());
Sout(bean.getAge() );
}
}
- 配置文件 applicationContext.xml 中
// 添加
<beans …… >
<bean id="person" class="com.…….Person"></bean>
</beans>
解耦合 && 属性
@Data // Lombok 注释:替代set / get / toString 方法
public class Person{
private Food foot;
}
@Data
public class Food{
private int hungry;
}
<beans …… >
<bean id="person" class="…….Person">
<constructor-arg name="name" value="zhangsan"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="food" ref="food"></constructor-arg>
</bean>
</beans>
<constructor-arg name="name" value="zhangsan"></constructor-arg>
其中:constructor-arg是属性
,value是值
,ref代表引用其他的类
Food food = ctx.getBean("food",Food.class);
String a = ToStringBuilder.reflectionToString(person);
Sout(a);
ApplicationContext.xml 文件的详情
<project xmlns="http://maven.apache.org/POM/4.0.0" <!--这里只是一个标签-->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
xml文件的定义
- 加载多个配置文件
// 文件一: ApplicationContext.xml
// 文件二: ApplicationContext-service.xml
// 调用:
// 方法一:
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml","ApplicationContext-service.xml");
// 方法二:
//将字符串定义成一个数组
// 方法三:在一个 XML 文件中使用
<import resource="applicationContext-service1.xml">
<import resource="applicationContext-service2.xml">
// 优化
<import resource="application-*.xml">
// ………………
总结
- 将
new
换成<bean id="xxx" class="xxx.class"></bean>
- 将
set
换成<constructor-arg name="xxx" value="xxx"></constructor-arg>
- 配置文件的开头部分的功能
- 引用 一个 / 多个 配置文件的方式
相关网址
Spring Framework 仓库地址:http://repo.spring.io/libs-release-local/org/springframework/spring/
Spring 官方推荐开发工具(STS):https://spring.io/tools