Spring5框架
- Spring5框架的概念
Spring是轻量级的开源的 JavaEE框架
Spring可以解决企业应用开发的复杂性
Spring有两个核心部分:IOC和 Aop
(1)IOC:控制反转,把创建对象过程交给 Spring进行管理
(2)Aop:面向切面,不修改源代码进行功能增强
Spring特点
(1)方便解耦,简化开发
(2)Aop编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6)降低 API开发难度
Spring框架下载地址:
https://repo.spring.io/release/org/springframework/spring/ - 创建spring 案例
(1)new project
(2)点next 后
(3)选择 Java Hello World 后 点击next
写上项目名后,开始打开
(4)导入相关包,我没下载,我直接在maven理找
与spring 底层最直接的 core container:
Bean、Core、Context、Expression
因此涉及了这几个包,都是springframework类,因此都会在这里边
(5)导包
加入进去后
(6)创建普通类,和普通方法
public class User {
public void add(){
System.out.println("这是add方法");
}
}
创建一个xml文件
该XML中主要是为了配置创建的对象
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--配置User对象-->
<bean id="user" class="spring5_demo01.bean.User"></bean>
</beans>
这里的id 是唯一标识符,标识后面 name,name的值对应为我们创建的对象和方法
最后,用一个测试类去测试
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestAdd {
@Test
public void add(){
//加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
//通过反射获取到User文件
User user = context.getBean("user",User.class);
//将该类对象打印出来
System.out.println(user);
//打印出该方法
user.add();
}
}
测试结果
成功!
3. IOC(概念和原理)
(1) 什么是IOC?
<1>控制反转,把对象创建和对象之间的调用过程,交给 Spring进行管理
<2>使用 IOC目的:降低耦合度
<3>做入门案例就是 IOC实现,利用xml 配置,以前都是new 实例化一个对象,现在通过spring xml 文件配置,相当于就是交给了spring 框架了,它来为我们处理对象的调用的事项,不用再去new 实例化了
(2)IOC的底层实现原理
xml解析、工厂模式、反射
第一步: 通过上面的例子,我们可以看到,现在xml文件中配置好对象
<bean id="user" class="spring5_demo01.bean.User"></bean>
这里我的理解是把对象托付给了spring框架
spring通过这个xml配置文件找到对应的类
第二步: 创建service 和dao层,创建工厂类
public class UserFactory {
public static UserDao getDao(){
String classValue = class属性值; //xml 解析
Class clazz = Class.forName(classValue); //反射创建对象
return (UserDao) clazz.newInstance();
}
}