(kuang)1、Spring 笔记
官网:https://spring.io/projects/spring-framework#overview
官方下载地址:https://repo.spring.io/release/org/springframework/spring/
GitHub:https://github.com/spring-projects/spring-framework
依赖:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.9</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.9</version>
</dependency>
1.2 优点:
- spring是开源的免费的容器。
- spring是一个轻量级的,非入侵式的框架。
- 控制反转(IOC),面向切面编程 (AOP)。
- 支持事务处理,对框架整合的支持。
总结:spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
1.3 组成:
- 之前,程序是主动创建对象,控制权在程序员手上。
- 使用set注入之后,程序不再具有主动性,变成了被动的接收对象。
IOC思想,从本质上解决了问题,程序员不用再去管理对象的创建了,系统的耦合性降低,可以更加专注的业务层
这是IOC的原型,反转就是把主动权交给用户
2.2 控制反转
控制:谁来控制对象的创建,传统应用是由程序员控制对象的创建,使用spring后,对象是由spring来控制
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:就是利用set方法来进行注入
IOC是一种编程思想,由主动的编程变成被动的接收
现在,我们彻底不用在程序中改动了,要实现不同的操作,只需要在xml配置中进行修改。所谓的IOC:对象由spring进行创建、管理、装配
3、HelloSpring
- 新建一个maven项目,编写实体类
public class Hello {private String str;public String getStr() {return str;}public void setStr(String str) {this.str = str;}@Overridepublic String toString() {return "Hello{" +"str='" + str + '\'' +'}';}
}
2.编写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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--使用Spring来创建对象,在Spring这些都称为Bean类型 变量名 = new 类型();Hello hello = new Hello();id = 变量名class = new的对象property 相当于给对象中的属性设置一个值!-->
//使用spring来创建对象,在spring这些都称为Bean<bean id="hello" class="com.kuang.pojo.Hello"><property name="str" value="Spring"/></bean>
</beans>
.3.测试
public class MyTest {public static void main(String[] args) {//获取Spring的上下文对象!ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");//我们的对象现在都在Spring中的管理了,我们需要使用,直接去里面取出来就可以!Hello hello = (Hello) context.getBean("hello");System.out.println(hello.toString());}
}Hello{str='Spring'}
这个过程就叫控制反转:
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
反转:程序本身不创建对象,而变成被动的接收对象。
依赖注入:就是利用set方法来进行注入的。
IOC是一种编程思想,由主动的编程变成被动的接收。
可以通过new ClassPathXmlApplicationContext去浏览一下底层源码。
OK,到了现在,我们彻底不用在程序中去改动了,要实现不同的操作,只需要在xml配置文件中进行修改,所谓的IOC,一句话搞定:对象由Spring来创建,管理,装配!
887
5. 依赖注入(DI)dependency injection
5.1 构造器注入
5.2 set方式注入【重点】
public class Address {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}
public class Studfent{private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String,String> card;private Set<String> games;private String wife;private Properties info;
}
<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="address" class="com.hardy.pojo.Address"><property name="address" value="郑州"/></bean><bean id="student" class="com.hardy.pojo.Student"><!-- 第一种,普通值注入 value--><property name="name" value="hardy"/><!-- 第二种,bean注入 ref--><property name="address" ref="address"/><!-- 第三种,数组注入--><property name="books"><array><value>三国演义</value><value>水浒传</value><value>红楼梦</value><value>西游记</value></array></property><!-- 第四种,list集合注入--><property name="hobbys"><list><value>听歌</value><value>看书</value><value>学Java</value></list></property><!-- 第五种,map注入--><property name="card"><map><entry key="校园卡" value="201112084"/><entry key="银行卡" value="2637643487362476376"/></map></property><!-- 第六种,set注入--><property name="games"><set><value>LOL</value><value>梦幻西游</value><value>绝地求生</value></set></property><!-- 第七种,null值注入--><property name="wife"><null/></property><!-- 第八种,Properties 特殊值注入--><property name="info"><props><prop key="driver">201112084</prop><prop key="url">hardy</prop><prop key="username">root</prop><prop key="password">root</prop></props></property></bean>
</beans>
public class MyTest {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");Student student = (Student) context.getBean("student");System.out.println(student.toString());/*** Student{* name='hardy',* address=Address{address='郑州'},* books=[三国演义, 水浒传, 红楼梦, 西游记],* hobbys=[听歌, 看书, 学Java],* card={* 校园卡=201112084,* 银行卡=263764348736246},* games=[LOL, 梦幻西游, 绝地求生],* wife='null',* info={* password=root,* url=hardy,* driver=201112084,* username=root}}*/}
}
5.3 拓展方式注入(P和 C命名空间注入)
我们可以使用P命名空间 和 C命名空间注入
注:需要导入xml约束
xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p"
xmlns:p="http://www.springframework.org/schema/p"<!--p命名空间注入,可以直接注入属性 property --><bean id="user" class="com.hardy.pojo.User" p:age="18" p:name="hardy"/>
xmlns:c="http://www.springframework.org/schema/c" <!--C命名空间注入,对象要有参构造器注入,constructor --><bean id="user2" class="com.hardy.pojo.User" c:name="张三" c:age="23"/>
5.4 bean的作用域:6种
singleton:全局只能有1个(spring默认机制)(单例模式)
prototype:每次从容器get的时候都会产生一个新对象(原型模式)
request 以下的只能在web中使用
session
application
websocket
(kuang)1、Spring 笔记相关推荐
- 狂神说Spring笔记(全网最全)
Spring框架 1.Spring 狂胜说Spring笔记以及代码 1.1 简介 Spring : 春天 -->给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架 ...
- Spring:笔记整理(1)——HelloWorld
Spring:笔记整理(1)--HelloWorld 导入JAR包: 核心Jar包 Jar包解释 Spring-core 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件 ...
- spring 笔记2:Spring MVC : Did not find handler method for 问题的解决
spring 笔记2:Spring MVC : Did not find handler method for 问题的解决 参考文章: (1)spring 笔记2:Spring MVC : Did n ...
- spring 笔记持续更新2012年9月16日 11:54:45
spring笔记 点击下载立体结构笔记http://download.csdn.net/detail/yao__shun__yu/4608595 点击进入我的个人编程网站,初步建设中http://mo ...
- 跟杨春娟学Spring笔记:AOP之SpringAOP引介通知
跟杨春娟学Spring笔记:AOP之SpringAOP引介通知 完成:第一遍 1.如何代码实现AOP之SpringAOP引介通知? IntroductionInterceptor(引介通知) 在目标类 ...
- [转]Spring 笔记
Spring 笔记 笔记总结到位,非常经典. 参考资料: Spring 笔记(江南白衣博物馆) Spring下单元测试的要点 Spring配置要点 Spring事务管理
- Spring笔记9--Spring的三大重要配置(alias,bean,import)
我的所有spring笔记大集锦 Spring5入门知识整合(持续更新) 目前而言就bean用的最多,import在以后的团队协作中用的很多 下面逐一说说各自用法 1.alias关键字 首先alias是 ...
- 【从零开始学Spring笔记】工厂类
大家可以关注作者的账号,关注从零开始学Spring笔记文集.也可以根据目录前往作者的博客园博客进行学习.本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法.欢迎大家一起学 ...
- 跟杨春娟学Spring笔记:表达式装配
跟杨春娟学Spring笔记:表达式装配 完成:第一遍 1.使用表达式注入有哪几种? 如果是表达式注入,必须在value里写#{表达式} 运算符:等于 符号: == 文本类型运算符: eq 运算符:小于 ...
- 跟杨春娟学Spring笔记:集合装配
跟杨春娟学Spring笔记:集合装配 完成:第一遍 1.常见集合元素有哪些? 集合元素 : 用途:装配list类型的值,允许重复 集合元素 : 用途:装配set类型的值,不允许重复 集合元素 : 用途 ...
最新文章
- 联想手机android系统耗电,联想 K900 Android 4.2 手机续航能力实测
- u检验、t检验、F检验、X2检验 (转)
- C++中Struct和Class的区别
- (6)css盒子模型(基础下)
- 工作90:富文本编辑器使用篇wangedit
- MySQL8怎么设置时区为东八区_mysql时区设置为东八区
- 数博会重磅活动:第二届大数据科学与工程国际会议详细日程
- JS工具类——Select操作类
- 计算机网络经典试题答案,2016年计算机软考网络工程师经典练习试题及答案
- SketchUp Pro 2019下载|SketchUp Pro 2019(草图大师)免安装绿色精简版下载
- 【数学期刊】世界著名数学期刊
- 表单复选框按钮全选-取消全选小案例
- 《算法新解》作者刘新宇:我只是想打开那些黑盒子,告诉人们里面有什么。
- MASC: Multi-scale Affinity with Sparse Convolution for 3D Instance Segmentation
- 巨简单又好用的pygame游戏暂停继续方法
- js如何判断保留两位小数
- 【设计模式】一:六大基本原则详解
- java最新面试题及答案2020 阿里(十六)
- 如何做数据平滑迁移:双写方案
- leon3详细开发教程
热门文章
- 基于javaweb+jsp的医院住院管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
- ODBC 和OLEDB
- 数码相框(LCD、I2C)
- BMN:Boundary-matching network for temporal action proposal generation
- 前端与后台的交互方式
- 你买票了吗?五一火车票发售量创历史新高,车票总发售2209万张票
- Py之zhon:zhon库的简介、安装、使用方法之详细攻略
- 一年级关于计算机的手抄报内容是什么,小学一年级小知识手抄报内容
- mysql清空表中数据
- oracle给已有表添加主键