IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring学习(1) -> 正文阅读

[Java知识库]Spring学习(1)

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,2
            value:构造方法的形参类型是简单类型,使用value
            ref:构造方法的形参是引用类性,使用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,byType
        1.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方法。

持续更新中…

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:28:59  更:2022-05-18 17:31:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:04:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码