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是一个容器,管理对象,给属性赋值, 底层是反射创建对象。
几种一般注入
<bean id="myStudent" class="com.dyw.Ba01.Student">
<property name="age" value="20"/>
<property name="name" value="丁杨维"/>
</bean>
<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>
<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>
<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>
<bean id="myStudent02" class="com.dyw.Ba01.Student">
<constructor-arg value="阿丁"/>
<constructor-arg value="20"/>
<constructor-arg ref="mySchool"/>
</bean>
引用类型的自动注入
<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>
<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方法。
持续更新中…
|