软件开发中的原表是什么呢?

软件开发一般有以下流程:

根据客户实际业务需求,1V1高效沟通,拒绝繁琐流程,最快30分钟出解决方案。

成立专项研发小组,快速启动项目,预估研发流程和项目节点。

整理资料,规划客户需求,设计原型图,进行功能布局

开展UI设计和页面设计,提供产品主视觉和定调方案,优化体验。

搭建系统架构,开发产品功能,编写业务逻辑,实现产品功能。

产品功能测试,兼容性测试,压力测试,Bug修复审核等,完善产品逻辑。

客户验收试用,原型图、设计稿、操作文档交付。

服务器环境部署,域名解析,配置操作后台。

7*24小时技术支持,漏斗维护,安全维护,保障系统正常运行。

回访客户使用情况,收集客户反馈,保障客户使用体验。

具体的开发时长需要根据不同的项目来进行评估,短的1个月,长的甚至长达1年以上,需要不断地打磨优化。

感谢您为社区的和谐贡献力量请选择举报类型

经过核实后将会做出处理
感谢您为社区和谐做出贡献





注意:这几种赋值方式中,还有一种可以使用 <ref bean>引用标签,并且<value>标签和<value>中的值都是和实体类中对应成员变量设置的数据类型有关系.

整体的测试用例代码如下:


需要程序员自定义类型转换器,处理.

4.2.2 用户自定义类型

  • 配置文件中进行注入(赋值)

 
 
 


  • 第一种赋值方式的问题如下:
  • 为成员变量提供set/get方法

JDK类型注入简化:value 属性只能简化 8种基本类型 + String 注入标签;

用户自定义类型注入简化

p标签在IDEA工具的xml配置文件中通过alt+enter快捷键导入

JDK 类型注入 – 基于p命名空间的简化

用户自定义类型注入 – 基于p命名空间的简化

4.3 构造方法注入详解

  • 注入: 通过Srping的配置文件,为成员变量赋值
  • Set注入: Spring调用Set方法,通过配置文件,为成员变量赋值
  • 构造注入: Spring调用构造方法,通过配置文件,为成员变量赋值

Spring的配置文件配置如下:

日常使用中,应用Set注入还是构造注入呢? 答案: Set注入更多

  • 构造注入麻烦(需要考虑重载)
  • Spring框架底层,大量应用了Set方法注入
  • 控制: 对于成员变量赋值的控制权
  • 反转控制: 把对于成员变量赋值的控制权,从代码中反转(转移)到Spring工程和配置文件中完成
  • 底层实现: 工厂设计模式
  • 注入: 通过Spring的工程及配置文件,为对象(bean,组件)的成员变量赋值.
  • 依赖注入: 当一个类需要另一个类时,就意味着依赖,一旦出现了依赖,就可以把另一个类作为本类的成员变量,最终通过Spring配置文件进行注入(赋值).

Srping工厂创建复杂对象的3种方式

  • getObject():用于书写创建复杂对象时的代码。

Spring配置文件的配置:


依赖注入(DI):把 ConnectionFactoryBean 中依赖的 4 个字符串信息 ,通过配置文件进行注入。


 
 
 
 

Spring中用于创建复杂对象的一种方式,也是Spring原生提供的,后续讲解Spring整合其他框架,大量应用了FactoryBean接口.

  1. 避免Spring框架的侵入
  2. 整合遗留系统一般会用到实例工厂

5.4.1 如何控制简单对象的创建次数

  • 通过配置文件实例化对象

5.4.2 如何控制复杂对象的创建次数


5.4.3 为什么要控制对象的创建次数

好处: 节省不必要的内存浪费. 什么样的对象只创建一次?

什么样的对象每次都要创建新的?

6.1 什么是对象的生命周期

指的是一个对象创建,存活,消亡的一个完整的过程.

6.2 为什么要学习对象的生命周期

由Spring负责对象的创建,存活,销毁,了解Spring的生命周期,有利于我们使用好Spring为我们创建对象.

6.3 生命周期的三个阶段

创建阶段 —> 初始化阶段 —> 销毁阶段

Spring 工厂何时创建对象?

  • scope=“singleton”:Spring 工厂(IoC 容器)创建的同时,创建对象。 通过配置 也可以实现工厂获取对象的同时,创建对象。
理解此处构造方法是在Spring工厂创建的同时,对象就创建了
测试结果如下:可以发现配置文件中配置singleton,测试代码中还没有调用ctx.getBean("product")方法,构造方法就已经调用了,这就是工厂创建的同时,对象就创建了.
测试结果如下: Spring工厂会在获取对象的同时,创建对象.当配置文件中配置prototype,必须调用了getBean方法,Prodct类中的构造方法才会被调用.

Spring工厂在创建完对象后,调用对象的初始化方法,完成对应的初始化操作

  1. 初始化方法提供: 程序员提供初始化方法,最终完成初始化操作.
  2. 初始化方法调用: Srping工厂进行调用.

对象中提供一个普通的初始化方法,配置文件种配置 init-method:


  1. 如果一个对象即实现了InitializingBean接口的初始化方法,同时有提供了普通的初始化方法,那么他们的执行顺序是怎么样呢? 答案: 先执行InitializingBean中的初始化方法,在执行自定义的普通初始化方法.
  1. 如果配置文件中注入了实体类中的属性,如下:

这种情况下则注入方法一定发生在初始化操作之前

  1. 什么叫做初始化操作 比如: 资源的初始化,如数据库,IO,网络等…

Spring销毁对象前,会调用对象的销毁方法,完成销毁操作

  1. 销毁方法:程序员根据自己的需求,定义销毁方法,完成销毁操作 调用:Spring工厂完成调用
  1. 对象中提供一个普通的销毁方法,配置文件种配置 destroy-method
  1. 销毁方法的操作只使用于scope="singleton",初始化操作都适用。
  2. 什么叫做销毁操作 主要指的是资源的释放操作,比如:io流的关闭,数据库连接的关闭

6.4 配置文件参数化

把Spring配置文件中需要经常修改的字符串信息,转移到一个更小的配置文件中.

  1. Spring的配置文件中存放需要经常修改的字符串? 答案: 存在,以数据库连接相关配置为代表.
  2. 经常变化的字符串,在Spring的配置文件中,直接修改,不方便项目的维护.
  3. 转移到一个小的配置文件,一般是properties文件,利于维护.
  4. 配置文件参数化: 利于Spring配置文件的维护.

1. 配置文件参数化的开发步骤

  • 提供一个小的配置文件(一般是properties文件),文件名与放置位置没有要求
  • spring的配置文件与小配置文件进行整合

 

6.5 自定义类型转换器

作用: Spring通过类型转换器把配置文件中字符串类型的数据,转换成了对象中成员变量对象类型的数据,进而完成了注入

6.5.2 自定义类型转换器

原因: 当Spring内部没有提供特点的类型转换器时,而程序员在应用过程中还需要使用,那么就需要程序员自己自定义类型转换器.

  • 在Spring的配置文件中进行配置

 
  • MyDateConverter中的日期格式,可以不写死,通过依赖注入的方式,由配置文件完成赋值
//定义一个成员变量,用来作为传入日期格式yyyy-MM-dd的参数

 
 
 
 
  • Spring框架内置了日期类型的转换器,但是要求日期格式必须是(不支持)
  • 后置处理Bean的运行原理分析: 程序员实现 BeanPostProcessor 接口中规定的两个方法:

作用:Spring创建完对象,并进行注入之后,可以运行Before方法进行再加工

  • 获得Spring创建好的对象,通过方法参数Bean获得最终通过返回值交给Spring框架

作用: Spring执行完对象的初始化操作后,运行After方法进行再加工

  • 获得Spring创建好的对象: 通过方法参数Bean获得最终通过返回值交给Spring框架


 
 


BeanPostPrcessor细节:BeanPostProcessor 会对 Spring 工厂创建的所有对象进行加工。如果工厂创建了多个不同的对象,要注意区别传入的对象

7.1 为什么需要代理设计模式

Service层中包含了哪些代码? 核心功能(代码量较多):业务运算,DAO 调用 额外功能(附加功能,不属于业务,可有可无,代码量小):事务、日志、性能

  • 拿现实生活中的例子来做对比,解决方案是 引入一个代理

概念:通过代理类,为原始类(目标类)增加额外的功能 好处:利于原始类(目标类)的维护

目标类 / 原始类:指的是 业务类 (核心功能 –> 业务运算、DAO调用) 目标方法 / 原始方法:目标类(原始类)中的方法就是目标方法(原始方法) 额外功能 / 附加功能:日志、事务、性能 …

我要回帖

更多关于 安卓软件开发 的文章

 

随机推荐