Spring

介绍

spring全家桶:spring , springmvc ,spring boot , spring cloud

spring: 出现是在2002左右,解决企业开发的难度。减轻对项目模块之间的管理,
类和类之间的管理, 帮助开发人员创建对象,管理对象之间的关系。
spring核心技术 ioc , aop 。能实现模块之间,类之间的解耦合。

耦合:是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

解耦合:指将程序的结构变得松散不是固定的而是可变化的 例如接口的实现类是可以更换的 而直接写的类是顶死的 **解耦就是用数学方法将两种运动分离开来处理问题。**程序的解耦合大概就是让代码和程序不绑定不互相依赖

依赖:classa中使用classb的属性或者方法, 叫做classa依赖classb


框架怎么学: 框架是一个软件,其它人写好的软件。
1)知道框架能做什么, mybatis–访问数据库, 对表中的数据执行增删改查。
2)框架的语法, 框架要完成一个功能,需要一定的步骤支持的,
3)框架的内部实现, 框架内部怎么做。 原理是什么。
4)通过学习,可以实现一个框架。

IOC(反转控制)

spring的第一个核心功能 ioc

IoC (Inversion of Control) : 控制反转, 是一个理论,概念,思想。
描述的:把对象的创建,赋值,管理工作都交给代码之外的容器实现, 也就是对象的创建是有其它外部资源完成。

控制: 创建对象,对象的属性赋值,对象之间的关系管理。
反转: 把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。 由容器代替开发人员管理对象。创建对象,
给属性赋值。

正转:由开发人员在代码中,使用new 构造方法创建对象, 开发人员主动管理对象。

 public static void main(String args[]){Student student = new Student(); // 在代码中, 创建对象。--正转。}

容器:是一个服务器软件, 一个框架(spring)

为什么要使用 ioc : 目的就是减少对代码的改动, 也能实现不同的功能。 实现解耦合。

java中创建对象有哪些方式:

1. 构造方法 , new Student()
2. 反射
3. 序列化
4. 克隆
5. ioc :容器创建对象
6. 动态代理

ioc的体现:
servlet 1: 创建类继承HttpServelt
2: 在web.xml 注册servlet , 使用 myservlet
com.bjpwernode.controller.MyServlet1

3. 没有创建 Servlet对象, 没有 MyServlet myservlet = new MyServlet()4. Servlet 是Tomcat服务器它能你创建的。 Tomcat也称为容器 Tomcat作为容器:里面存放的有Servlet对象, Listener , Filter对象

IoC的技术实现 ,
DI 是ioc的技术实现,
DI(Dependency Injection) :依赖注入, 只需要在程序中提供要使用的对象名称就可以, 至于对象如何在容器中创建,
赋值,查找都由容器内部实现。

spring是使用的di实现了ioc的功能, spring底层创建对象,使用的是反射机制

spring是一个容器,管理对象,给属性赋值, 底层是反射创建对象。

几种一般注入

<!--声明Student对象注入:就是赋值的意思简单类型di:给属性赋值1.set注入(设置注入):spring调用类的set方法;你可以再set方法中完成属性赋值<property>(普通赋值 调用类中写好的set方法)
--><bean id="myStudent" class="com.dyw.Ba01.Student"><property name="age" value="20"/><!--调用类中的对应的set方法 setName()--><property name="name" value="丁杨维"/></bean><!--对引用类型进行set设置注入引用类型的set注入:spring调用类的set方法
--><bean id="myStudent" class="com.dyw.Ba01.Student"><property name="age" value="20"/><property name="name" value="丁杨维"/><property name="school" ref="mySchool"/></bean><bean id="mySchool" class="com.dyw.Ba02.School"><property name="name" value="成信大"/><property name="address" value="四川成都双流区"/></bean><!--2.构造注入:spring调用类有参构造方法,再创建对象的同时,在构造方法中给属性赋值.构造注入使用<constructor-arg>标签<constructor-arg>标签:一个<constructor-arg>标签表示构造方法的一个参数<constructor-arg>标签属性:name:表示构造方法的形参名index:表示构造方法的参数的位置.参数从左往右位置是0,1,2value:构造方法的形参类型是简单类型,使用valueref:构造方法的形参是引用类性,使用ref;
--><bean id="myStudent" class="com.dyw.Ba01.Student"><constructor-arg name="age" value="20"/><constructor-arg name="name" value="丁杨维"/><constructor-arg name="school" ref="mySchool"/></bean><!--使用index--><bean id="myStudent01" class="com.dyw.Ba01.Student"><constructor-arg index="0" value="丁杨维"/><constructor-arg index="1" value="20"/><constructor-arg index="2" ref="mySchool"/></bean><bean id="mySchool" class="com.dyw.Ba02.School"><constructor-arg name="name" value="cuit"/><constructor-arg name="address" value="sccd"/></bean><!--省略index 但要按照0,1,2的顺序--><bean id="myStudent02" class="com.dyw.Ba01.Student"><constructor-arg  value="阿丁"/><constructor-arg  value="20"/><constructor-arg  ref="mySchool"/></bean>

引用类型的自动注入

<!--引用类型的自动注入:spring框架根据某些规则可以给引用类型赋值.不用我们自己给引用类型赋值了使用的规则常用的是byName,byType1.byName(按名称注入):java类中的引用类型的属性名和spring容器中(配置文件)<bean>的id一样且数据类型是一致的,这样的容器中的bean,spring能够赋值给引用类型.
--><!--1.ByName--><bean id="myStudent" class="com.dyw.Ba03.Student" autowire="byName"><property name="age" value="20"/><property name="name" value="丁杨维"/></bean><bean id="school" class="com.dyw.Ba03.School" scope="prototype"><property name="name" value="cuit"/><property name="address" value="sccd"/></bean><!--ByType:按类型注入: java中引用的数据类型和spring容器中(配置文件)<bean>的class=""中的类是同源关系,这样的bean能够赋值给引用类型同源就是一类的意思:1.java类中引用类型的数据类型和bean的class的值是一样的2.java类中引用类型的数据类型和bean的class的值是父子关系.3.java类中引用类型的数据类型和bean的class的值是接口和实现类的关系.注意bean下是常规的set注入除了引用类型(它是由ByType注入)
--><!--2.ByType--><bean id="Student01" class="com.dyw.Ba04.Student" autowire="byType"><property name="name" value="丁杨维"/><property name="age" value="20"/></bean><bean id="mSchool" class="com.dyw.Ba04.School"><constructor-arg name="name" value="cuit"/><constructor-arg name="address" value="sccd"/></bean>

spring-conetxt 和 spring-webmvc是spring中的两个模块

spring-context:是ioc功能的,创建对象的。
spring-webmvc做web开发使用的, 是servlet的升级。
spring-webmvc中也会用到spring-context中创建对象的功能的。

junit : 单元测试, 一个工具类库,做测试方法使用的。
单元:指定的是方法, 一个类中有很多方法,一个方法称为单元。

使用单元测试
1.需要加入junit依赖。

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>

2.创建测试作用的类:叫做测试类
src/test/java目录中创建类

3.创建测试方法

1)public 方法2)没有返回值 void 3)方法名称自定义,建议名称是test + 你要测试方法名称4)方法没有参数5)方法的上面加入 @Test ,这样的方法是可以单独执行的。 不用使用main方法。

持续更新中…

Spring学习(1)相关推荐

  1. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  2. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  3. Spring学习笔记(三) AOP_annotation,AOP_XML

    在学习课程以前,听说AOP有种很神秘的感觉,好像很好深的技术.其实原理很简单,使用动态代理的方式给程序增加逻辑.与此相似的有struts2中的filter拦截器. 再讲AOP之前先把需求说一下: 同S ...

  4. 送给 Java 程序员的 Spring 学习指南

    https://www.infoq.cn/article/Ad-8ghcGGCNU572U6oEX 学习 Spring 的基础要求 Spring 官网首页是这么介绍自己的--"Spring: ...

  5. Spring学习总结三

    Spring框架JdbcTemplate与事务 Spring学习总结三 0.需要的jar包 1.JdbcTemplate模板 1.1.JdbcTemplateAPI的操作 1.1.1.User类 1. ...

  6. Spring学习总结二

    Spring框架的代理与AOP.AspectJ Spring学习总结二 0.在理解什么是AOP之前的一些话 1.什么是AOP 2.AOP的重要概念 3.代理模式 3.1.静态代理 3.2.动态代理 3 ...

  7. Spring学习总结一

    Spring框架IoC与DI思想及应用 Spring学习总结一 1.Spring是什么 2.Spring的优点 2.1.关键概念 2.2.Spring的优点 3.Spring的架构图 3.1.核心容器 ...

  8. Spring学习(九)Spring 和数据库编程【了解】

    本文借鉴:Spring学习,Spring框架总结 一.传统 JDBC 回顾 用一个大佬的demo来简单看一下 /*** 使用jdbc,根据id查询单个Student的信息*/ public class ...

  9. Spring学习(八)AOP详解

    本文借鉴:Spring学习 一.一个例子 在上面的例子中,包租婆的核心业务就是签合同,收房租,那么这就够了,灰色框起来的部分都是重复且边缘的事,交给中介商就好了,这就是 AOP 的一个思想:让关注点代 ...

  10. Spring学习(七)bean装配详解之 【通过注解装配 Bean】【自动装配的歧义解决】...

    本文借鉴:Spring学习,@Bean 的用法(特此感谢!) 自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器 ...

最新文章

  1. log4j 配置详解
  2. linux进程上下文切换,Linux 性能分析总结之 CPU 上下文切换(二)
  3. Silverlight4.0教程之WebBrowser控件(Silverlight内置HTML浏览器控件)
  4. PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍...
  5. statement执行insert into语句_【图文并茂】源码解析MyBatis ShardingJdbc SQL语句执行流程详解...
  6. 关于提示对话框的总结
  7. Solr中的数据导入
  8. 资深开发者告诉你“页游转手游”应注意的五大点
  9. 快捷键截屏_win7截图快捷键是什么 win7截图快捷键怎么按
  10. 传统蓝牙和Bluz低功耗蓝牙的区别
  11. [转] MySQL树结构递归查询处理
  12. 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
  13. 批处理 获取计算机硬件信息,检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息...
  14. Defaulting to user installation because normal site-packages is not writeable
  15. 如何找回回收站清空的重要文件
  16. TI单芯片毫米波雷达xWR1642开箱例程
  17. 2020年全球及中国术后镇痛药行业市场现状分析,非阿片类药物需求不断增长「图」
  18. jQuery选择器探究:TAG选择器和CLASS选择器
  19. 意瑞线性霍尔CHA611,帮电流模组补芯
  20. java编译命令用什么写_要编译java程序需要使用的命令是什么

热门文章

  1. win10出现的各种问题
  2. 答辩ppt怎么做动态任务时钟制作PPT教程(二)
  3. word 保存html,word保存网页HTML文件 Word2003基础知识:保存网页HTML文件方法
  4. 他两次都没能感动中国,不知道有没有感动我们[转载]
  5. Scrum板与Kanban如何抉择?敏捷工具:mouglu板与按照tnisvdpa
  6. [BUUCTF]PWN16——jarvisoj_level2
  7. PostgreSQL中的约束
  8. 微信小程序 vue 滑块验证码
  9. 读刘未鹏博客反思和总结(看书,思考,写博文)
  10. Error[e46]: Undefined external debug_str::?relay referred