当前位置: 首页 > news >正文

有趣网站开发电商网站前端制作分工

有趣网站开发,电商网站前端制作分工,技术服务外包公司,英文网站字体大小七. Service 1. 数据与逻辑分离 之前我们讲面向对象设计#xff0c;都是把数据和逻辑放在一起#xff0c;这是理想情况。 现实情况是#xff0c;把对象分为两类#xff0c;一类专门存数据#xff0c;一类专门执行逻辑 存数据的就是一个 Java Bean 存逻辑的叫做 XxxSe…七. Service 1. 数据与逻辑分离 之前我们讲面向对象设计都是把数据和逻辑放在一起这是理想情况。 现实情况是把对象分为两类一类专门存数据一类专门执行逻辑 存数据的就是一个 Java Bean 存逻辑的叫做 XxxService 2. 控制反转 一直以来都是我们自己用 new 关键字配合构造方法来创建对象但我们现在用的是 Spring 框架可以把一些创建对象的活交给 Spring 框架去做。 那么 Spring 框架怎么创建对象呢它主要是配合一些注解来完成对象的创建例如我们一直在用的 Controller 注解当 Spring 程序运行时它会检查这些类上有没有加一些特殊注解例如它发现这个类上加了 Controller 注解框架就知道该由框架来创建这个 CalculatorController 对象默认只会创建一个。 这样的注解还有不少我们现在需要掌握的有 Controller 算一个还有一个是 Service试试把这些 Service 类的创建交给 Spring 吧 Service class CalculatorService0 implements Cal {public String[] cal(Calculator c) {}public String[][] details(Calculator c) {} }Service class CalculatorService1 implements Cal {public String[] cal(Calculator c) {}public String[][] details(Calculator c) {} }Service class CalculatorService2 implements Cal {public String[] cal(Calculator c) {}public String[][] details(Calculator c) {} }Service 的作用就是告诉 Spring这个类以后要创建对象的话不归程序员管了啊归 Spring 管其实 Controller 的作用也是类似的控制器对象虽然我们没 new实际由 Spring 来创建了 把对象的创建权交给 Spring 来完成对象的创建权被交出去这称之为控制反转 3. 依赖注入 那么我们的代码里怎么拿到 Spring 创建的对象呢 Controller public class CalController {// ...Autowiredprivate Cal[] calArray;// ...}这儿又要引入一个相关的名词依赖注入 比如说这里的 控制器 需要 service 才能工作就可以说控制器对象依赖于 service 对象缺了这些依赖对象行吗不行吧。怎么找到这些依赖对象呢如果是框架帮你找到这些依赖对象按一定规则提供给你就称之为依赖注入 怎么让框架帮你找到这些依赖对象呢答案是 Autowired #mermaid-svg-FPadadS47p9kOnef {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FPadadS47p9kOnef .error-icon{fill:#552222;}#mermaid-svg-FPadadS47p9kOnef .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FPadadS47p9kOnef .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-FPadadS47p9kOnef .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FPadadS47p9kOnef .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FPadadS47p9kOnef .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FPadadS47p9kOnef .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FPadadS47p9kOnef .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FPadadS47p9kOnef .marker.cross{stroke:#333333;}#mermaid-svg-FPadadS47p9kOnef svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FPadadS47p9kOnef g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-FPadadS47p9kOnef g.classGroup text .title{font-weight:bolder;}#mermaid-svg-FPadadS47p9kOnef .nodeLabel,#mermaid-svg-FPadadS47p9kOnef .edgeLabel{color:#131300;}#mermaid-svg-FPadadS47p9kOnef .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-FPadadS47p9kOnef .label text{fill:#131300;}#mermaid-svg-FPadadS47p9kOnef .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-FPadadS47p9kOnef .classTitle{font-weight:bolder;}#mermaid-svg-FPadadS47p9kOnef .node rect,#mermaid-svg-FPadadS47p9kOnef .node circle,#mermaid-svg-FPadadS47p9kOnef .node ellipse,#mermaid-svg-FPadadS47p9kOnef .node polygon,#mermaid-svg-FPadadS47p9kOnef .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FPadadS47p9kOnef .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-FPadadS47p9kOnef g.clickable{cursor:pointer;}#mermaid-svg-FPadadS47p9kOnef g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-FPadadS47p9kOnef g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-FPadadS47p9kOnef .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-FPadadS47p9kOnef .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-FPadadS47p9kOnef .dashed-line{stroke-dasharray:3;}#mermaid-svg-FPadadS47p9kOnef #compositionStart,#mermaid-svg-FPadadS47p9kOnef .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #compositionEnd,#mermaid-svg-FPadadS47p9kOnef .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #dependencyStart,#mermaid-svg-FPadadS47p9kOnef .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #dependencyStart,#mermaid-svg-FPadadS47p9kOnef .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #extensionStart,#mermaid-svg-FPadadS47p9kOnef .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #extensionEnd,#mermaid-svg-FPadadS47p9kOnef .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #aggregationStart,#mermaid-svg-FPadadS47p9kOnef .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef #aggregationEnd,#mermaid-svg-FPadadS47p9kOnef .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-FPadadS47p9kOnef .edgeTerminals{font-size:11px;}#mermaid-svg-FPadadS47p9kOnef :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} «interface» CalculatorService CalculatorService0 CalculatorService1 CalculatorService2 在 Cal[] 数组上添加 Autowired 即可它是根据类型去问 Spring 要对象Spring 中有很多对象具体要哪个对象呢答案是根据类型要 Cal 表示只要 Spring 创建的对象实现了 Cal 接口就符合条件Cal[] 表示要多个最终的结果是找到 Spring 管理的 CalculatorService0、CalculatorService1、CalculatorService2 三个对象并放入了 Cal[] 数组 4. 由Spring创建JavaBean Spring 还可以根据请求中的多个查询参数帮我们创建 JavaBean 数据对象 Controller public class CalController {// ...Autowiredprivate Cal[] calArray;RequestMapping(/cal)ResponseBodyString[] cal(Calculator c, int type) {return calArray[type].cal(c);}RequestMapping(/details)ResponseBodyString[][] details(Calculator c, int type) {return calArray[type].details(c);}}如果提供了无参构造Spring 会优先用它来创建对象并调用 setXXX 方法对属性进行赋值 查询参数有 p那么 Spring 会找一个名为 setP 的方法完成赋值查询参数有 m那么 Spring 会找一个名为 setM 的方法完成赋值查询参数有 yr那么 Spring 会找一个名为 setYr 的方法完成赋值查询参数有 type但 Calculator 对象没有 setType 方法所以 type 并不会存入对象 如果没有无参构造但提供了有参构造Spring 会拿构造方法参数名与查询参数相对应并完成赋值 我们的例子中查询参数有 pmyr构造方法参数名也叫 pmyr根据对应关系完成赋值 注意 不是所有 JavaBean 对象都应该交给 Spring 创建一般只有请求中的数据才会这么做 5. 包结构约定 目前可以划分 3 个包 controller 包用来存放控制器类service 包用来存放业务逻辑类dto 包用来存放存数据的 JavaBean 类dto 是 Data Transfer Object数据传输对象的缩写 最后要注意一下入口类的位置必须放在 service, controller 这几个包的上一层为什么呢 这个入口类它还肩负了一个职责查找 Service, Controller 等注解的类然后创建对象。它查找的范围是在这个类的当前 package 之内因此如果 servicecontroller 等包如果不在这个 package 内那么会查找不到
http://www.zqtcl.cn/news/493405/

相关文章:

  • 社交网站制作临海建设局网站导航
  • 合肥需要做网站的公司佛山网站制作的公司
  • 哪里有做网站平台建设网站如何盈利
  • dw网站制作素材单人做网站需要掌握哪些知识
  • 网络推广产品公司做移动网站优化首
  • 网站建设dqcx广告网络用语
  • 烟台网站建设首推企汇互联见效付款手机网站宽度自适应
  • 网站建设小程序湖南wordpress插件刷不出来
  • 中国建设银行网站首页joy荣添创意网站建设
  • 市场营销网站网站开发技术项目说明书
  • 销售网站开发的背景wordpress虚线框可序列
  • 免费响应式网站深圳关键词优化
  • 网站宣传模式做微视频的网站
  • 网站改版后的内容福建 网站建设
  • 网站的文件夹企业邮箱在哪查看
  • 开了360网站卫士ssl如何做301深圳制作网站开发费用
  • 在哪里做马可波罗网站公众号自己做电影网站
  • 网站建设音乐插件怎么弄陕西城乡建设部网站首页
  • 全国免费自学网站打开百度网站首页
  • 国外网站开发公司晋江论坛网
  • 问卷调查网站个人网站源码免费下载
  • 网站备案信息核验单填写建设企业网站价钱
  • 相城建设监理有限公司网站网页设计中html代码
  • 做农产品网站高端汽车
  • 工信部网站首页wordpress网站搬家vps
  • wordpress 淘客插件长沙排名优化公司
  • 网站首页怎么制作过程如何自己创作一个游戏
  • 自己做企业网站在哪学习建网站
  • 门户网站建设 突出服务学习电子商务网站建设与管理的收获
  • 做网站排名大概要多少免费做个人网站