Spring 学习以及总结(一)

一、Spring 文件配置   

       使用Spring 最基本需要几个基本的jar包

 

 使用maven加载到本地仓库

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>

  简单的实现第一个Spring基本部署

   第一

   先建一个普通的maven 项目  在pom.xml 中下载上诉提到的maven 

   检测旁边的maven 是否成功导入

  第二

 在java中建一个普通的User类

 

 这里 用了 lombok 来代替了 get set  和构造  方法 并且重写了 一个toString  , 没有lombok插件的需要手动写入方法。

 第三

配置 Spring的xml 配置文件 

这个文件需要你在resources资源包中创建 

使用IDEA 

 

 

他会自动的帮你创建好 关于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">

</beans>

这段配置是 关于bean注入的规范 有了这一些规范 我们就可以在xml实现简单的bean注入了

这样就完成了一个Spring的基本部署

二、Spring Bean注入

在实现注入前需要了解 IOC模式(控制反转)是一个什么东西

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度

看一下官方的解释

IoC模式,系统中通过引入实现了IoC模式的IoC容器,即可由IoC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分离。 其中一个特点就是通过文本的配置文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码

按我解释来讲就是 ioc是将程序的主动性由内部转移至外部 由用户操作而不是靠程序员修改,就是不用在修改需求而是增加需求。

ioc 其实就是一个帮助用户管理的一个容器  用户只需选择自己所需要的对象 ioc就会自动 帮助实例化

但是要注意的是ioc并不是一个具体的类而是一种设计模式

 

 注意:这上面代码只是简单的说明了IOC的主要思想 并不是真正的IOC。

Spring IOC

接口org.springframework.context.ApplicationContext代表 Spring IoC 容器,并负责实例化,配置和组装上述 bean。容器通过读取配置元数据来获取有关要实例化,配置和组装哪些对象的指令。配置元数据以 XML,Java 注解或 Java 代码表示。它使您能够表达组成应用程序的对象以及这些对象之间的丰富相互依赖关系。

在Spring中 我们对象的实例化  是由Spring配置文件的bean注入对象信息 到IOC容器中装配  然后又由IOC指令进行实例化

这样就完成了一个简单的Spring 

 

 这个是bean 标签的所有属性 其中constructor argumentsproperties 是两种不同的注入方式  前者是构造注入  后者是set注入 ,前者要求实体类拥有有参构造 后者是要求拥有set方法。

autowiring 是自动装配   这个是针对实体类中的属性存在另外一个实体类类型

 这样用 普通set注入是无法很方便进行注入  再注入的同时也是需要将实体类实例化后进行注入 

 因此我需要将像这种 address地址类 也弄一个bean

 

 也就是相当于 setAdress(new Address("厦门"  ,   "X804154") );

当然Spring也通过另外一种方法进行注入 就是通过 自动装配

主要的自动装配就是主要通过 id或者是类型 

通过自动装配 实体类属性就可以不用写 <property> 就可以实现注入 

byName是通过id   只上面实体类的id会和类名字相同就可以匹配到

 而byType就通过类型进行自动装配 而不是通过byName 最大的优点就可以就同时bean 两种相同的类型但不同名字的对象

而byType 的优点 就是可以通过 类型 快速装配  不用去定义id 或是name

还有一个比较重点的bean 属性 就是scope

 其中最要的两个属性就是 

singleton 和  prototype  一个是单例模式 一个是原形模式

 

 

 单例模式 就是当你从容器中 第一次getBean()实例化对象时 他就会把对象存入到缓存中 下次再次使用 容器的getBean()获取同一个对象时 

就不会通过容器实例化而是直接从缓存中取得 在debug可以明显看到两次取的对象的地址是相同。

原形模式就是将缓存取消  每次执行都是新创建一个对象  不再是从缓存中拿取。

单例模式  官方文档图

 

原形模式  官方文档图

 

未完待续.....

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值