0x00 前言
本章是本专栏开篇也是小编为了巩固记忆而记录的笔记,希望小编的专栏可以帮助更多学习入门spring的小伙伴们,同时也希望小伙伴们如果发现错误,请及时进行指正,以免错误的指引小伙伴们,希望小伙伴们和小编一起共同努力把本专栏做好,最后如果本专栏对小伙伴们有所帮助,希望小伙伴们可以给个关注。同时如果有大佬有幸拜读本专栏,也希望能留下您的宝贵意见,在这里小编非常感谢!
0x01 Spring介绍
- Spring是一个轻量级的企业级应用开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层之间的耦合问题,是为了简化Java应用的开发。它是一个IOC(控制反转)和AOP(面向切面编程)的容器框架。
- Spring的优点
- Spring通过DI、AOP和消除样板式代码来简化Java开发
- 在Spring框架之外,还有一个构建于核心框架之上的庞大生态圈,将Spring推向各个领域,如:Web、REST、移动端开发以及NoSQL等
- Spring是一个低入侵式框架,代码污染极低
- 可以独立在任何应用服务器上,基于Spring开发的应用,真正的实现了Write Once Run AnyWhere的承诺
- Spring的IOC容器降低了业务对象替换的复杂性,提高了组件之间的解藕
- Spring的AOP允许将一些通用任务,如:日志,事务等进行集中处理,从而提供了更好的复用
- Spring的ORM和DAO层,提供了对第三方框架的良好整合,降低了底层对数据库的访问
- Spring的高度开放性,它不强制应用必须依赖于Spring,可以根据开发者的需要进行选择Spring的全部或者部分
- IOC是什么
- IOC式一种设计思想。在Java开发中我们将设计好的对象交给容器进行创建和管理,而不是使用代码显示的进行创建
- 将创建对象和查找依赖关系的控制权交给IOC容器,由容IOC器进注入,组合对象和对象之间的关系,这样使得对象和对象之间松耦合,功能可复用,使得整个应用的体系结构可维护性、扩展性和灵活性更高。简单一句话,对象由Spring容器进行管理、创建、和装配
0x02 IOC的实现
- 引入jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
- 创建实体
public class User {
private String name;
private Integer age;
public void setName(String name){
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(Integer age){
this.age = age;
}
}
public class Person {
private String name;
private Integer age;
public void setName(String name){
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(Integer age){
this.age = age;
}
}
- 配置spring.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">
<bean id="user" class="com.demo.User" />
</beans>
- 编写测试类
public class IocTest {
public static void main(String[] args){
// 加载Spring配置
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
// 获取User对象
User user = context.getBean("user",User.class);
System.out.println(user);
// 获取Person对象
Person person = context.getBean("person",Person.class);
System.out.println(person);
}
}
通过上述代码可以清楚的发现,如果没有用spring之前,我们创建对象需要多次new才能创建对象,而通过spring,只需要初始化一次Spring容器,然后只需要在xml中配置多个bean,就可以通过容器拿到我们需要的对象,这样是不是方便的多呢,而且我们使用new创建,还会增加内存的开销,而Spring容器初始化对象只会创建一次,这样大大减少了内存的消耗,本章暂不过多深入,相信小伙伴们也发现了Spring的便利,只需要将编写好的类配置好,就可以获取对象,是不是很简单呢!
- 接下来我们来说一说Spring优点中的DI,那么DI和IOC是什么关系呢,我们继续往下看
- IOC和DI(依赖注入)有什么关系呢?
- 本质上,DI和IOC是在不同角度描述同一件事情,DI是在应用角度描述,而IOC是在容器角度描述,也可以说,IOC是依赖倒置原则的设计思想,而DI是具体的实现
0x03 IOC优点
- 解藕
- 集中管理
- 功能可复用
- 使应用程序的整体结构可维护性、扩展性、灵活性更高
0x04 结束语
本章到这里就结束了,如果对小伙伴们有所帮助,麻烦给个关注支持一下哦!