问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring项目结构(spring项目结构)

发布网友 发布时间:2024-09-10 07:36

我来回答

1个回答

热心网友 时间:2024-10-28 04:58

SpringBoot项目结构及功能

在IntelliJ使用SpringInitializer快速创建项目

这是pom文件中父项目,再进一步查看其spring-boot-starter-parent

发现真正管理SpringBoot应用里面的所有依赖版本的地方在这spring-boot-dependencies

SpringBoot的版本仲裁中心;

以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

再往下看:

这是springboot的web场景启动器,只要引入了它,就能帮我们导入了web模块正常运行所依赖的组件;

@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@SpringBootConfiguration:SpringBoot的配置类:标注在某个类上,表示这是一个SpringBoot的配置类;

@Configuration:配置类上来标注这个注解;

配置类-----配置文件;配置类也是容器中的一个组件;@Component

@EnableAutoConfiguration:开启自动配置功能;

以前我们需要配置的东西,SpringBoot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

在src下创建一个controller包,新建一个HelloController类,之后运行springboot,便可以通过localhost:/8080/hello来访问hello页面。

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

?application.properties

?application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

springboot启动会扫描以下位置的application.properties或者application.yml文件作为Springboot的默认配置文件

–file:./config/

–file:./

–classpath:/config/

–classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

application.yml

@Value获取值和@ConfigurationProperties获取值比较

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

==我们还可以通过spring.config.location来改变默认的配置文件位置==

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

java-jarspring-boot-02-config-02-0.0.1-SNAPSHOT.jar--spring.config.location=G:/application.properties

SpringCloud整体构架设计(一)

SpringClound整体核心架构只有一点:Rest服务,也就是说在整个SpringCloud配置过程之中,所有的配置处理都是围绕着Rest完成的,在这个Rest处理之中,一定要有两个端:服务的提供者(Provider)、服务的消费者(Consumer),所以对于整个SpringCloud基础的结构就如下所示:

既然SpringCloud的核心是Restful结构,那么如果要想更好的去使用Rest这些微服务还需要考虑如下几个问题。

1、所有的微服务地址一定会非常的多,所以为了统一管理这些地址信息,也为了可以及时的告诉用户哪些服务不可用,所以应该准备一个分布式的注册中心,并且该注册中心应该支持有HA机制,为了高速并且方便进行所有服务的注册操作,在SpringCloud里面提供有一个Eureka的注册中心。

对于整个的WEB端的构架(SpringBoot实现)可以轻松方便的进行WEB程序的编写,而后利用Nginx或Apache实现负载均衡处理,但是你WEB端出现了负载均衡,那么业务端呢?应该也提供有多个业务端进行负载均衡。那么这个时候就需要将所有需要参与到负载均衡的业务端在Eureka之中进行注册。

在进行客户端使用Rest架构调用的时候,往往都需要一个调用地址,即使现在使用了Eureka作为注册中心,那么它也需要有一个明确的调用地址,可是所有的操作如果都利用调用地址的方式来处理,程序的开发者最方便应用的工具是接口,所以现在就希望可以将所有的Rest服务的内容以接口的方式出现调用,所以它又提供了一个Feign技术,利用此技术可以伪造接口实现。

在进行整体的微架构设计的时候由于牵扯的问题还是属于RPC,所以必须考虑熔断处理机制,实际上所有的熔断就好比生活之中使用保险丝一样,有了保险丝在一些设备出现了故障之后依然可以保护家庭的电器可以正常使用,如果说现在有若干的微服务,并且这些微服务之间可以相互调用,例如A微服务调用了B微服务,B微服务调用了C微服务。

如果在实际的项目设计过程之中没有处理好熔断机制,那么就会产生雪崩效应,所以为了防止这样的问题出现,SpringCloud里面提供有一个Hystrix熔断处理机制,以保证某一个微服务即使出现了问题之后依然可以正常使用。

通过Zuul的代理用户只需要知道指定的路由的路径就可以访问指定的微服务的信息,这样更好的提现了java中的“key=value”的设计思想,而且所有的微服务通过zuul进行代理之后也更加合理的进行名称隐藏。

在SpringBoot学习的时候一直强调过一个问题:在SpringBoot里面强调的是一个“零配置”的概念,本质在于不需要配置任何的配置文件,但是事实上这一点并没有完全的实现,因为在整个在整体的实际里面,依然会提供有application.yml配置文件,那么如果在微服务的创建之中,那么一定会有成百上千个微服务的信息出现,于是这些配置文件的管理就成为了问题。例如:现在你突然有一天你的主机要进行机房的变更,所有的服务的IP地址都可能发生改变,这样对于程序的维护是非常不方便的,为了解决这样的问题,在SpringCloud设计的时候提供有一个SpringCloudConfig的程序组件,利用这个组件就可以直接基于GIT或者SVN来进行配置文件的管理。

在整体设计上SpringCloud更好的实现了RPC的架构设计,而且使用Rest作为通讯的基础,这一点是他的成功之处,由于大量的使用了netflix公司的产品技术,所以这些技术也有可靠的保证。

SpringBoot目录结构

以Maven工程形式新建一个springboot项目。目录结构如下:

重点介绍resources目录:

在resources文件夹或与其并列的文件夹下建立public文件夹,在public文件夹下的html文件可以通过浏览器中输入文件+后缀名的方式直接访问的.??

一、public文件夹(需要自己手动新建),就相当于在eclipse的web项目中的WEB-INF文件夹外的文件,是不需要通过服务器内部进行访问的。

二、templates文件夹,是放置模板文件的,因此需要视图解析器来解析它。所以必须通过服务器内部进行访问,也就是要走控制器--服务--视图解析器这个流程才行。

三、static文件夹,既不能直接访问,也不能通过服务器访问到。因此,这个文件夹,可能是放一些css、图片这样的文件供服务器内部引用。

application.properties文件,全局配置文件。

才疏学浅之处,切莫在意。

????????????????????????????????????????????????????——2019.6.10?下午

SpringBoot项目目录结构

根目录:com.example.demo

1)启动类(gApplication.java)

????????推荐放在根目录com.example.demo包下

2)实体类(domain)

3)数据接口访问层(Dao)

4)数据服务接口层(Service)推荐:com.example.demo.service

5)数据服务实现层(ServiceImplements)推荐:com.example.demo.service.impl

????????使用idea的同学推荐使用com.example.demo.serviceImpl目录

6)前端控制器层(Controller)推荐:com.example.demo.controller

7)工具类库(utils)推荐:com.example.demo.utils

8)配置类(config)推荐:com.example.demo.config

9)数据传输对象(dto)推荐:com.example.demo.dto

10)视图包装对象(vo)推荐:com.example.demo.vo

根目录:resources

1)项目配置文件:resources/application.yml

2)静态资源目录:resources/static/

????????用于存放html、css、js、图片等资源

3)视图模板目录:resources/templates/

????????用于存放jsp、thymeleaf等模板文件

4)mybatis映射文件:resources/mapper/(mybatis项目)

5)mybatis配置文件:resources/mapper/config/(mybatis项目)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的燃气热水器12升电脑版显示FR一pH一PL一dH一nE一qU怎么调好_百度知... 热水器ph什么意思 上海工程技术大学公共管理专业是什么学院 公共事业管理在暨南大学中属于哪个学院? 中央财经大学公共事业管理学生就业去向都有哪些 中飞院公共事业管理是什么专业 广西医科大学公共事业管理属于哪个学院 抖音怎么发视频@抖音小助手 发视频@抖音小助手操作一览 轻颜相机怎么取消自动续费 取消自动续费教程 轻颜相机vip怎么取消 Intellij IDEA 搭建 Spring Boot 项目 交房时房内水路跟线路没给画上标线合理吗 如何坐高铁第一次乘坐高铁-铁路资讯 一个人没坐过高铁怎么坐-铁路资讯 坐高铁的流程(坐高铁怎么坐的详细流程) 油任连接是什么? 南方电网超高压公司安宁局待遇怎么样 40镀锌管活接怎么安装 位于安宁区兰州省电力学校里面那个专业好啊!!给我说一下??? 求有关蜡烛的诗———至少10首谢谢了 ai里矢量图怎么把背景去了ai怎么把导入的矢量图换颜色 怎么把照片导入ai里成为矢量图图片像素还算清晰如何把图片导入ai并变成... ai中图像描摹的作用的使用方法ai中图像描摹的作用的使用方法有哪些_百 ... cfa考试内容包括哪些? cfa一共要考多少门? 车在小区被刮了物业有责任吗 教师资格网上申报,工作单位如何填写比较合适呢?我所从事的不是教师职业... 张继科世界冠军一览表 奥运乒乓球历届男单冠军一览表 怎么让自己的手机通话声音变声? 竖排三个红绿灯怎么看? 天天快递扫码工的工作时间,月工资多少 竖起三个红绿灯右转收不受限制 我给卖家退货,淘宝上退货物流查不到,怎么到天天快递官网上就查到了... 传说中,靠蛰龙睡丹功活了800岁的道士是? 我六级工伤左手等于残废。老板想和我私了。我想问下他应该赔给我多少... 怎么把手机app导入电脑 窝藏罪既遂量刑幅度是怎样的 窝藏罪既遂量刑处罚是怎样的 对于窝藏罪既遂怎么量刑? 小米手机浏览器书签如何恢复? 小米手机浏览器记录能从备份中恢复吗? 中邮循还贷无法提现三个月后可以提现吗 从000到999有那些数学 麒麟花怎么养能开花 白灼腐竹的做法 腐竹的家常做法大全 过期的牛奶可以用来敷面膜吗 过期的牛奶直接扔掉太可惜了,可以用来做什么呢?有经验的朋友帮... 牛奶过期可以敷脸吗