网站建设与管理以后工作方向,it培训机构排名及学费,网络营销app有哪些,区块链app定制开发一#xff0c;spring是什么 Spring是一个轻量级的控制反转#xff08;IOC#xff09;和面向切面编程#xff08;AOP#xff09;的容器框架 理念#xff1a;使现有的技术更加容易使用#xff0c;本身是一个大杂烩#xff0c;整合了现有的技术框架 优点#xff1…一spring是什么 Spring是一个轻量级的控制反转IOC和面向切面编程AOP的容器框架 理念使现有的技术更加容易使用本身是一个大杂烩整合了现有的技术框架 优点 弊端违背了原有的技术理念配置太过繁琐被称为“配置地狱”
二Spring框架由七个定义明确的模块组成
三现代化的开发就是基于spring容器的开发 1.springboot 一个快速开发的脚手架 约定大于配置 2.springcloud springCloud是基于SpringBoot实现的
四控制反转和面向切面 IOC:获得依赖对象的方式反转了对象由spring来创建管理和装配 1.控制反转从本质上解决了问题使我们程序员不用再去管理对象的创建了 系统的耦合性大大降低可以更专注于业务的实现IOC的原型 1以前程序是需要程序员主动创建对象控制权在开发人员手上 2使用了set方法程序不再具有主动性而是变成了被动的接受对象,主动权在用户手上 3配置
?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd/beans ref: 引用Spring容器中创建好的对象 value:具体的值基本数据类型 4IOC创建对象的方法 1.默认使用无参构造创建对象 2. 手动配置有参构造constructor 1下标赋值index 2通过类型创建不建议 3通过参数名name 5在配置文件加载的时候容器中管理的对象就已经初始化了容器类似于婚介所只有对象注册到了婚介所当容器applicationcontext被创建被管理的对象也就存在也就是被初始化了
五spring的配置 1.别名: alias:-----如果添加了别名我们也可以通过别名获取对象 2.Bean的配置: idbean的唯一标识符也就是相当于我们的对象名 classbean的全限定名“包名类名”bean对象所对应的全限定名 name: 也是别名而且name比alias更高级可以同时取多个别名逗号或空格或分号分割 ref:引用Spring容器中创建好的对象 value:具体的值基本数据类型 3.import: 1这个import一般用于团队开发可以将多个配置文件导入合并为一个 2假设项目中有多个人开发这三个人负责不同类的开发不同类需要注册到不同的bean中我们可以利用import将所有人的beans.xml合并为一个总的 张三beans 李四beans2 王五beans3 applicationContext.xml: import resourcebeans.xml/ import resourcebeans2.xml/ import resourcebeans3.xml/ 使用的时候直接使用总的配置就好了
六DI依赖注入 1.构造器注入 2.通过set方式注入 依赖注入set注入 依赖bean对象的创建依赖于容器 注入bean对象中的所有属性由容器来注入 环境搭建 1.复杂类型 2.真实测试对象
bean idstudent classcom.kuang.pojo.Student!--第一种普通注入--property namename value小俊/!--第二种bean注入ref--property nameaddress refaddress/!--第三种数组注入--property namebooksarrayvalue红楼梦/valuevalue西游记/valuevalue水浒传/valuevalue三国演义/value/array/property!--第四种list--property namehobbyslistvalue听歌/valuevalue王者/valuevalue跳舞/value/list/property!--第五种map--property namecardmapentry key身份证 value1234543234543234/entry key银行卡 value3ueqrqyrqoyrqywqo//map/property!--第六种set--property namegamessetvalueLOL/valuevalueCOC/valuevalueBoB/value/set/property!--第七种null--property namewifenull//property!--第八种properties--property nameinfopropsprop key学号190970070/propprop key性别男/propprop key姓名小俊/prop/props/property/bean 3.其他方式注入 注意这两种不能直接使用需要去导入约束从官方文档去拿 1p命名注入 xmlns:phttp://www.springframework.org/schema/p 2c命名注入 xmlns:chttp://www.springframework.org/schema/c !--p命名空间可以直接注入属性的值-- bean iduser classcom.kuang.pojo.User p:name小俊 p:age18/ !--c命名空间通过构造器注入construct-args-- bean iduser2 classcom.kuang.pojo.User c:age18 c:name小俊俊/ 4.bean的作用域 1单例模式singleton: spring 默认机制 bean iduser2 classcom.kuang.pojo.User c:age18 c:name 小俊俊 scopesingleton/ 2原型模式prototype: 每次从容器中get的时候都会产生一个新对象
3其他的在web中才用到
七.Bean的自动装配
自动装配是spring满足bean依赖的一种方式 spring会在上下文中自动寻找并自动给bean装配属性 三种装配在方式 1在xml中显示的配置 2在java中显示的配置3隐式的自动装配bean重要 1.byName自动装配 byName会自动在容器上下文中查找和自己对象set方法后面的值对应的beanID
bean idpeople classcom.kuang.pojo.People autowirebyNameproperty namename value小俊俊呀//bean 2.byType自动装配 byName会自动在容器上下文中查找和自己对象属性类型相同的beanID
bean idpeople classcom.kuang.pojo.People autowirebyTypeproperty namename value小俊俊呀//bean
小结
byname的时候需要保证所有bean的id唯一并且这个bean需要和自动注入的属性的set方法值一致byname的时候需要保证所有bean的class唯一并且这个bean需要和自动注入的属性的类型值一致