当前位置: 首页 > 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.pierceye.com/news/493405/

相关文章:

  • 本地郑州网站建设搭建一个网站
  • 如何做网站竞品分析哪个网站可以接任务做兼职
  • 佛山网站关键词网站建设需求分析文档
  • 网站收录地址旅游网站建设的相关报价
  • seo月薪seo优化方法网站快速排名推广渠道
  • 企业网站设计理念如何seo网站
  • 河南移动商城网站建设怎么创建平台卖自己的产品
  • 网上做网站钱被骗了报案有用吗文章自定义wordpress
  • 网站设置成灰色市场监督管理局是什么单位
  • 北京国贸网站建设wordpress需要付费才能看某些页面
  • 郸城网站建设wordpress教程cms
  • 做本地网站赚钱吗?php网站制作过程中遇到的问题及解决办法
  • 上海网站快速排名提升ui是网站建设吗
  • 中信建设有限责任公司洪波seo外链工具
  • 网站服务器和空间有什么区别网站制作的公司哪家效果好
  • 做网站具体收费梅州南站
  • 淘宝禁止了网站建设类wordpress极速优化
  • 山东app网站制作网站建设优化广告流量
  • 做阿里云网站浏览器编程语言
  • 青岛市网站制作企业邮箱密码忘了怎么重置密码
  • 文交所网站开发和业务多一样的平台
  • 如何免费自己做网站wordpress成品图
  • thinkphp做中英文网站电子商务网站建设的步骤一般为
  • 网站编程 mysql小说关键词搜索器
  • 农业网站开发企业名录搜索软件免费
  • 临沂医院手机网站建设上饶专业做网站建设
  • 超酷html5效果的工作室网站程序宝洁网站建设
  • 网销的网站建设与管理曲阜市网站建设
  • 类似一起做网站的网站珠海网站建设王道下拉強
  • wordpress 当前文章id益阳网站seo