ip域名找网站,直播app开发价格,重庆好的推广网站,常州酒店网站建设未来的几周时间#xff0c;大概率我会更新一下Spring家族的一些简单知识。而什么是Spring家族#xff0c;好多同学还不是很清楚#xff0c;我先来简单介绍一下吧#xff1a;
所谓Spring家族#xff0c;它其实就是一个框架#xff0c;是基于Servlet再次进行封装的内容。为…未来的几周时间大概率我会更新一下Spring家族的一些简单知识。而什么是Spring家族好多同学还不是很清楚我先来简单介绍一下吧
所谓Spring家族它其实就是一个框架是基于Servlet再次进行封装的内容。为啥说是再次进行封装呢就是因为Servlet也是封装的一门用于Web端的技术他们的基础都是Java。所以说想要学习Spring建议大家先去了解一下Java基础语法以及Servlet技术。
Spring是什么
通常意义下我们所说的Spring就是Spring Framework这是一个开源框架有着活跃而庞大的社区。为啥说Java的生态很完善我认为Spring家族就提供了许多保证生态完善的轮子。而Spring框架由于支持广泛的应用场景使得Java企业级的应用开发变得更简单。
框架为会啥流行呢或者换句话说为啥Spring会有这么庞大的用户量刚开始使用Java解决某一问题时代码冗杂而功能不全而使用一些工具方法就可以使得本来繁杂的代码变得简单而积聚了众多工具方法的组合就可以称之为框架既然有了可以使代码变简单的办法那么就一定会被更多人所用自然而然也会流行起来。
用一句话来概括Spring框架Spring是包含了众多工具方法的IoC容器。
IoC是什么
IoC的全称是Inverson of Control译为中文就是控制反转。其内容就是对对象的生命周期进行控制反转结果就是降低耦合。
举个简单的例子来说吧在传统开发中A类引用B类B类引用C类C类引用D类因此在A类中需要new一个B类B类中需要new一个C类而C类中需要new一个D类假如D类的构造方法发生了改变那么随之而来的就是需要去改变ABC三个类的构造方法但是在Spring开发中不需要进行new类而是直接把需要使用类的对象给传进来这样当D类发生改变时并不需要去动其他的类从而减少了许多不必要的麻烦降低了类与类之间的耦合度。
DI是什么
DI的全称是Dependency Injection译为中文就是依赖注入。其内容就是IoC容器在运行期间动态的将某种依赖关系注入到对象当中。
从客观角度来看IoC和DI描述的都是同一件事即通过IoC容器动态的将某种依赖关系注入到对象当中。不同的则是IoC是一种思想是从整体层面解释的概念而DI则表示的是一种技术用这种依赖注入的技术来控制对象生命周期的反转。
容器是什么
顾名思义容器就是用来存放物品的一种装置。在Spring中容器就是用来存放对象的装置。既然是容器那么就表明其可以放物品也可以拿物品。因此学习Spring时最核心的就是学会如何将对象存储到Spring中如何将对象从Spring中取出来。
明白了Spring核心功能那么它的好处是啥呢首先将对象存储到IoC容器中就表示将未来所有可能用到的工具都放入仓库中啥时候用啥时候取就可以了而用完再放入容器中即可非常的简单便捷。而传统的开发中new就相当于每次使用工具的时候都现场制作一把然后用完以后直接废弃下次再用的时候再制作非常麻烦这就是Spring开发和传统开发的区别。
Spring的创建和存取
1. 创建
创建一个maven项目 引入Spring-beans(管理对象的模块)和Spring-context(Spring上下文)依赖 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.3.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.3.RELEASE/version/dependency/dependencies
2. 存取
a. 创建一个Bean对象
所谓的Bean对象其实就是Java语言中的一个普通对象。
package org.example;public class User {public String sayHi() {return hello world;}
}
b. 添加配置文件
在resourse目录添加配置文件spring-config.xml(后缀是xml不可变但是前缀是可以改变的)xml文件的作用就是告诉Spring框架要存取的对象是啥。 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd/beans
c. 存对象
将Bean对象配置到xml文件中。
bean iduser classorg.example.User/bean
!--id表示的是Bean对象的名称不可重复;而class表示的是对象本身,即包名类名--
d. 取对象
读对象的话先要得到Spring对象再从Spring对象中取Bean对象获取Spring对象可以使用ApplicationContext。
package org.example;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//1. 先得到Spring对象ApplicationContext context new ClassPathXmlApplicationContext(spring-config.xml);//2. 从Spring对象中得到Bean对象User user context.getBean(user, User.class);//3. 使用Bean对象System.out.println(user.sayHi());}
}
对于得到Spring对象来说有两种方法可以得到。
一种就是使用ApplicationContext另一种方法就是BeanFactory。
package org.example;import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;public class App {public static void main(String[] args) {//1. 先得到Spring对象BeanFactory context new XmlBeanFactory(new ClassPathResource(spring-config.xml));//2. 从Spring对象中取到Bean对象User user context.getBean(user, User.class);//3. 使用Bean对象System.out.println(user.sayHi());}}
ApplicationContext和BeanFactory的异同
相同点
两者都可以得到Spring对象
两者都是来自Spring的顶级接口(即可以有很多类来继承他们)。
不同点 继承关系从上图可以看出ApplicationContext是继承了BeanFactory也就是说ApplicationContext不仅拥有BeanFactory的基础功能还在其功能之上加了些许其他功能例如国际化支持、资源访问以及事件传播等而BeanFactory则只有最基础访问Bean的能力。
性能ApplicationContext是一次性加载即程序运行的时候将Bean对象都给加载出来因此后续访问Bean的时候就会很快而BeanFactory则是在使用某个对象的时候才进行加载所有在执行Bean获取的时候会比较慢。
Spring中取对象的三种方法 //第一种方法使用Bean名称进行获取//当xml中没有出现这个Bean名称时依然进行强转那么可能会出现错误User user1 (User) context.getBean(user);//第二种方法使用Bean类型来获取//当xml中出现两次及以上即一个Bean对象但是有好几个名字时也会报错User user2 context.getBean(User.class);//第三种方法使用Bean名称和类型来获取User user3 context.getBean(user, User.class);
总结
了解了Spring是包含了众多工具方法的IoC容器
了解了IoC、DI以及容器的思想
了解了Spring的创建和存取。
上述已经实现了Spring的存取但是实现方法还是比较复杂接下来会写一篇关于Spring存取更简单的方式其中涉及到的内容也比较多例如有配置文件、五大注解、Bean注解以及三大注入等内容。