参考尚硅谷公开课:Spring5教程
spring5简单介绍
- 两个核心部分
IOC:控制反转。将创建对象的过程交给Spring进行管理,不需要进行new的方式。
AOP:面向切面。在不修改源代码的方式下对功能进行增强。
- 下载
下载地址:https://repo.spring.io/release/org/springframework/spring/
一步步寻找步骤:http://spring.io
找到自己想要下载的版本点击下载即可。
- 编写入门案例
(1)idea新建java工程
(2)引入spring。libs中每个模块都包含以下三部分。
spring5的模块组成如下图所示,目前demo中只需要基本功能,所以导入核心容器core coontainer即可。
(3)idea导入:新建libs文件夹;file-file constructure-下图
(4)使用spring创建对象,首先创建一个普通类
类、对象、方法之间的关系?
类:一个种类(class),抽象概念,共性产物
对象:属于该种类的一个对象/物件(object)
方法:对这个种类的东西可以进行的操作
类包含方法,类是对象的模板,对象是类的实例。
package com.atguigu.spring5;
public class User {
public void add(){
System.out.println("i am add……");
}
}
(5)创建spring配置文件,在配置文件中配置创建的对象
a:spring中配置文件使用xml格式
(6)测试
创建对象两步走:
1、加载spring配置文件
2、获取配置创建的对象
然后就可以调用对象的方法了!
public class testspring5 {
@Test
public void testAdd(){
// 1 加载spring配置文件
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); //补全快捷键 alt+回车
// 2 获取配置创建的对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.add();
}
}
扩充:
java中的get()和set()方法什么时候使用?
定义为private修饰符的成员变量,如果想要被外部调用,需要使用getter/setter
IOC容器的底层原理
- 概念
ioc:控制反转,将创建对象的过程交给Spriing进行管理,不需要new的方式进行创建。
扩充:
UserService中没有new UserFactory对象,直接就 类名.方法调用该类中的方法,是因为该方法是static修饰的方法,在类加载的时候就自动加载了该方法,所以不需要创建该类的对象实例。
通过工厂模式可以降低两个类的耦合度。虽然降低了类与类之间的耦合度,但是新增了与工厂的耦合。代码涉及的原则是尽可能的减低耦合,故为了进一步降低,采用IOC模式。
IOC中除了应用工厂模式,还增加了两个模块:XML解析+反射
- 接口
IOC思想是基于IOC容器完成,IOC容器底层就是对象工厂。
spring提供IOC容器两种实现方式:(两个接口)
(1)BeanFactory
(2)ApplicationContext
public void testAdd(){
// 1 加载spring配置文件
ApplicationContext/BeanFactory context = new ClassPathXmlApplicationContext("bean1.xml"); //补全快捷键 alt+回车
// 2 获取配置创建的对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.add();
}
BeanFactory/ApplicationContext 异同:
相同点:都可以实现加载配置文件并获取配置创建的对象。
不同点:
BeanFactory:是spring内部使用接口,不提供开发人员进行使用。
*加载配置文件的时候不会创建对象,在获取对象(getBean)的时候才会创建。
ApplicationContext:是BeanFactory的子接口,提供更多更强大的功能,面向开发人员使用的。
*加载配置文件时就会创建对象,即只要bean.xml中配置了<bean id="",class=""></bean>就会直接创建。
第二种方式比较好,在项目启动的时候把这些耗时耗资源的操作全部完成,然后使用即可。
ApplicationContext接口的重要实现类:快捷键:ctrl + h查看结构
FileSysetmXmlApplicationContext:使用的是盘符路径即配置文件实际在硬盘中的存储路径
ClassPathXmlApplicationContext:项目中src下的路径