Spring5 框架概述
Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
Spring总结起来优点如下:
- 低侵入式设计,代码的污染极低。
- 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。
- Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
- Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
- Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
- Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。
Spring框架结构组成图
Spring核心
- IOC:控制反转,把创建对象的过程交给spring进行管理
- AOP:面向切面编程,不修改源代码进行功能的增强
Spring5 入门案例
下载Spring
https://repo.spring.io/release/org/springframework/spring/
下载最新稳定版
创建普通Java工程
导入Spring5相关jar
需要导入四个核心包
创建一个类,在这个类中创建测试方法
package life.wangquanguo.spring;
public class User {
public void add(){
System.out.println("add........");
}
}
在src下创建spring配置文件
<?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">
<bean id="user" class="life.wangquanguo.spring.User"></bean>
</beans>
编写测试代码
package life.wangquanguo.spring;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest {
@Test
public void test(){
//获取spring上下文对象
//ClassPathXmlApplicationContext用于获取当前项目路径下的配置文件
//FileSystemXmlApplication用于获取系统绝对路径下的配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");
//获取bean对象
User user = applicationContext.getBean("user",User.class);
user.add();
}
}
运行测试方法发现User类中的方法已经被调用
IOC的概念和原理
什么是IOC
IOC就是控制反转,把手动创建对象的过程交给spring,上面入门案例就是IOC的实现,为了降低耦合
IOC底层原理
IOC思想就是基于IOC容器实现,IOC底层容器就是一个工厂
- 通过xml解析获取配置文件中需要创建的对象
- 使用工厂模式,将需要创建对象的class属性传入工厂
- 使用反射创建对象
BeanFactory接口
Spring提供IOC容器的两种方式(2个接口)
- BeanFactory:IOC容器基本实现接口,是Spring内部使用的接口
- 加载配置文件时不会去创建接口,只有在使用对象时才会去创建接口
- ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员去使用
- 加载配置文件时就会把在配置文件对象进行创建
Q.E.D.
Comments | 0 条评论