今日共享逐渐啦,请各位多多关照~
第一章:了解Spring
Spring认识框架
spring套餐: spring ,springmvc,spring boot,spring cloud
spring:发生在2002上下,处理公司开发设计的难度系数,缓解对新项目模块中间的管理方法。
类和类中间的管理方法,协助开发者创建对象,行为主体相互关系。
spring关键技术ioc ,aop 。能完成模块中间,类之间的解藕合。
依靠: classa中应用classb的特性或是方式,叫做classa依靠classb。
Spring框架内部结构模块
第二章 IoC控制反转
IoC定义
框架怎么学:框架是一个软件,是其他人写好的手机软件。了解框架会干啥, 实际的应用步要就可以了。
1)了解框架能干什么,mybatis–浏览数据库查询, 对表中的信息实行增删。
2)框架的英语的语法,框架要结束一个作用,必须一定的流程适用的。
3)框架的里面完成,框架内部结构如何做,基本原理是啥。
4)通过学习,可以完成一个框架。
spring的第一个关键作用ioc
IOC (Inversion of Control) :控制反转,是一个基础理论,定义,观念。
叙述的:把目标的建立,取值,管理方面都交到编码以外的器皿完成,也就是目标的建立是有其他外界資源进行。
操纵:创建对象,目标的特性取值,目标相互关系管理方法。
翻转:把原先的开发者管理方法,创建对象的管理权限迁移给编码以外的器皿完成。由器皿替代开发者行为主体。创建对象,给特性取值。
正转:由开发者在源代码中,应用new构造函数创建对象,开发者积极行为主体。
public static void main(string args[]){
student student – new Student();//在源代码中, 创建对象。–正转。
}
器皿:是一个服务器程序,一 个框架(spring)
为什么要应用ioc :目地是降低对源代码的修改,也可以完成不一样的作用。完成解藕合。
创建对象的方法
为什么要应用ioc :目地是降低对源代码的修改,也可以完成不一样的作用。完成解藕合。
java中创建对象有什么方法:
1.构造函数,new student ( )
2.反射面
3.实例化
4.复制
5.ioc。器皿创建对象
6.动态代理,运用反射机制在运转时建立代理商类。
IoC的完成技术性
ioc的反映:
servlet
1.建立类承继HttpServelt
2.web.xml 申请注册 servlet ,应用<servlet-name> myservlet </ servlet-name>
<servelt-class>com.
bjpwernode.controller.MyServlet1</servlet-class>
3.沒有建立Servlet目标,沒有 MyServlet myservlet = new MyServlet ()
4. Servlet是Tomcat网络服务器它能你建立的。Tomcat也称之为器皿。
Tomcat做为器皿:里边储存的有Servlet目标,Listener ,Fil ter对象
IoC的工艺完成
DT是inc的工艺完成
DI ( Dependency Injection) : 依赖注入,只要在系统中给予要应用的目标名字就可以,至
取值,搜索都由器皿内部结构完成。
spring是采用的di完成了ioc的作用,spring最底层创建对象,应用的是反射机制。
第一个事例创建对象
建立spring环境变量
建立器皿目标ApplicaitonContext【取得spring建立的目标】
spring创建对象的机会
获得器皿中目标信息内容的api
建立非自定目标
设值引入定义【引入便是取值】
ch02-di-xml:在spring的环境变量中,给java目标的特性取值。
di:依赖注入,表明创建对象,给特性取值。
di的建立有二种:
1.在spring的环境变量中,应用标识和特性进行,叫做根据XML的di完成。
2.应用spring中的注释,进行特性取值,叫做根据注释的id完成。
di的英语的语法归类:
1. set引入(设定引入) : spring调用类的set方式,在set方法可以完成特性的取值。
80上下全是采用的set引入。
2.结构引入,spring调用类的有主要参数构造函数,创建对象。在构造方法中进行取值。
简易种类的设值引入完成
单元测试junit
便是由于在main文档中检测不方便,不可以单独检测每一个方式,因此明确提出单元测试。
junit :单元测试,一个专用工具类库,做测试标准应用的。
模块:特定的是方式,一个类中有很多方法,一个方式称之为模块。
应用单元测试
1.必须添加junit依靠。
<dependency>
<groupId>junit</groupId>
<arti factId> junit </arti factId><version>4.11</version>
<scope>test</ scope>
</ dependency>
2.建立检测功效的类:叫做检测类
src/ test/java文件目录中建立类
3.创建测试标准
1) public游戏玩法
2)沒有传参void
3)方式名字自定,提议名字是test 你需要检测万法名字
4)方式沒有主要参数
5)方式的上边添加@Test,那样的办法是可以独立实行的。不用应用main方式。
设值引入【set注入】的常见问题
设值引入仅仅应用set方式
xml文件要求,全部的特性务必放到冒号中,int类型的信息也一样。
设值引入还可以给他人写的类开展取值,只需有对用的set方式就可以了。
引用类型的设值引入
结构引入
结构引入就是指,在结构调用者案例的与此同时,进行被调用者的创建对象。即应用构造器设定相互依赖。
还能够省去index。
结构引入创建文件目标
备考第一天內容【思维脑图】
IoC工作
全自动注入byName
简单化针对引用类型的反复取值,降低多余。
全自动注入byType
2. byType(分类引入) : java类中引用类型的基本数据类型和spring器皿中(环境变量) <bean>的class是同宗关联的,那样的bean可以取值给引用类型。
同宗便是一类的含意:
1.java类中引用类型的数据类型和bean的class的值是样的。
2.java类中引用类型的数据类型和bean的class的值父子类关系的。
3.java类中引用类型的数据类型和bean的class的值插口和完成类关系的
语法:
<bean id=”xx” class=”yyy” autowire= “byType”>
简易种类特性取值
</bean>
为什么应用多环境变量
工程项目中,必须好几个环境变量。
好几个配备优点
1.每一个文档的尺寸比一个文档要小许多,高效率。
2.防止多入市场竞争产生的矛盾。
假如你的新项目有好几个控制模块(有关的作用在一起),一个控制模块一个环境变量。
学员考勤管理控制模块一个环境变量,张三
学生成绩一个配置文件,李四
多文档的分配方式:
1.按程序模块,一个控制模块一个环境变量
2.按类的作用,数据库查询有关的配备一个文档环境变量,做事务管理的作用一个环境变量,做service作用的一个环境变量等。
包括关系的环境变量
注释的应用流程
根据注释的di:根据注释进行java目标建立,特性取值。
应用注释的流程:
1.添加maven的依靠spring-context ,在你添加spring- context的与此同时,间接性添加spring- aop的依靠,应用注释务必应用spring-aop依靠。
2.在类中添加spring的注释(好几个不一样功用的注释)
3.在spring的环境变量中,添加一个部件扫码器的标识,表明注释在你的项目中的部位。
学习培训的注释:
1.@Component
2.@Respotory
3.@service
4.@Controller
5.@value
6.@Autowired
7.@Resource
Component注解应用
部件扫码器
多注释新项目分层次
@Component(value = “myStudent “)相当于
<bean id= “myStudent” class=”com.bjpowernode.ba01.Student” />
spring中合@Component作用一致,创建对象的注释也有:
1. @Repository (用在持久层类的上边) :放到da的完成类上边,表明建立dao目标,dao对象是能浏览数据库系统的。
2.@Service(用在业务流程层类的上边) :放到service的完成类上边,建立service目标,service对象是做业务流程解决,可以有事务管理等作用的。
3. @Controller(用在控制板的上边) :放到控制板(CPU)类的上边,建立控制板目标的,控制板目标,可以接纳客户上传的主要参数,表明要求的处置结果。
以上三个注释的应用语法和@Component 一样的。都能创建对象,可是这三个注释也有另外的作用。
@Repository,@service , @Controller 是给项目的目标分层次的。
不清楚要用以上三个注释的情形就用@Component。
扫描仪好几个包的方式
简易种类特性取值
引用类型特性取值AutoWired全自动引入,应用byType
流程:最先扫描仪环境变量ApplicaitonContext,应用部件扫码器扫描仪base-package,建立库中全部目标,依据在其中的注释引入【取值】。
引用类型特性取值AutoWired全自动引入,应用byName
较为
引用类型AutoWired的required特性
引用类型
@Autowired:spring 框架给予的注释,完成引用类型的取值。
spring中根据注释给引用类型取值,应用的是全自动引入基本原理, 适用byName, byType。
@Autowired:默认设置应用的是byType全自动引入。
特性:required,是 一个boolean种类的,默认设置true。
required=true :表明引用类型取值不成功,程序流程出错,并停止实行。
required=false :引用类型假如取值不成功,程序流程正常的实行,引用类型是null。
引用类型AutoWired的required特性强烈推荐应用初始值true
应用true, 尽快处理程序流程中的问题,出错。
引用类型Resource
Resource是来自于JDK中的注释,并不是来自于spring的。
引用类型
@Resource:来源于jdk中的注释,spring框架给予J对这一注释的作用适用,可以应用它给引用类型取值。应用的也是全自动引入基本原理,适用byName ,byType ,默认设置是byName。
部位: 1. 在特性界定的上边,不用set方式,强烈推荐应用。
2.在set方式的上边
//默认设置是byNamel
@Resource
xml环境变量和注释的比照
常常改的是应用xml环境变量、不常常改的就应用注释。
注解为主导,环境变量辅助
备考【控制反转】
复习动态代理的建立方法
应用动态代理的目的性是在没有更改原来类的基本上,对它进行功能增强。
JDK 动态代理
动态代理的建立方法常见的有二种:应用JDK的Proxy,与根据CGLIB转化成代理商。Jdk的动态性规定总体目标目标务必完成插口,这也是java设计上的规定。
从jdk1.3至今,java 语言表达根据java.lang.reflect 包给予三个类适用分销模式Proxy,Method 和InovcationHandler。
CGLIB动态代理(掌握)
CGLIB的规定更低
CGLIB(Code Generation Library)是一个开源软件。是一个强劲的,性能卓越,高品质的Code转化成类库,它可以在运作期拓展Java 类与完成Java插口。它普遍的被很多AOP的框架应用,例如Spring AOP。
使用JDK 的Proxy 完成代理商,规定总体目标类与代理商类完成同样的插口。若总体目标类不会有插口,则没法应用该方法完成。但针对无插口的类,会为其建立动态代理,就需要应用CGLIB来完成。.
CGLIB代理商的产生机理是转化成总体目标类的派生类,而子类是提高过的,这一派生类目标便是代理商目标。因此,应用CGLIB转化成动态代理,规定总体目标类务必可以被承继,即不可以是final 的类。
CGLIB常常被使用在框架中,例如Spring ,Hibernate等。cglib 的代理商高效率高过Jdk。新项目中同时应用动态代理的位置很少。一般都应用框架给予的作用。
用注释完成Ioc工作
1、添加依靠
2、建立类,在类中添加注释
3、名声部件扫码器
应用动态代理完成一个功能增强
今日份共享已结束,请大伙儿多多指教和指导!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。