springboot结构(如何构建spring boot)

本文目录
如何构建spring boot
Spring Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring
MVC的Web应用和REST服务开发。
Spring
4倡导微服务的架构,针对这一理念,近来在微博上也有一些有价值的讨论,如这里和这里。微服务架构倡导将功能拆分到离散的服务中,独立地进行部署,Spring
Boot能够很方便地将应用打包成独立可运行的JAR包,因此在开发模式上很契合这一理念。目前,Spring
Boot依然是0.5.0的里程碑版本,因此相关的文档尚不完善,本文将会以一个简单的样例来介绍基于这个项目的开发过程。
要Spring
Boot进行功能开发,需要使用Gradle或者Maven作为构建工具。在本例中,我们会使用Eclipse和Maven插件进行开发。要使用Spring
Boot,首先创建一个Maven工程,并修改Maven主要的配置文件pom.xml,如下所示:
《parent》
《groupId》org.springframework.boot《/groupId》
《artifactId》spring-boot-starter-parent《/artifactId》
《version》0.5.0.M7《/version》
《/parent》
《dependencies》
《dependency》
《groupId》org.springframework.boot《/groupId》
《artifactId》spring-boot-starter-web《/artifactId》
《/dependency》
《dependency》
《groupId》org.thymeleaf《/groupId》
《artifactId》thymeleaf-spring3《/artifactId》
《/dependency》
《/dependencies》
《properties》
《start-class》com.levin.Application《/start-class》
《/properties》
《build》
《plugins》
《plugin》
《groupId》org.springframework.boot《/groupId》
《artifactId》spring-boot-maven-plugin《/artifactId》
《/plugin》
《/plugins》
《/build》
《repositories》
《repository》
《id》spring-milestone《/id》
***隐藏网址***
《snapshots》
《enabled》false《/enabled》
《/snapshots》
《/repository》
《/repositories》
《pluginRepositories》
《pluginRepository》
《id》spring-milestone《/id》
***隐藏网址***
《snapshots》
《enabled》false《/enabled》
《/snapshots》
《/pluginRepository》
《/pluginRepositories》
在上面的配置中,需要将工程的parent设置为spring-boot-starter-parent,并添加对spring-boot-starter-web的依赖,这样我们就无需设置各个依赖项及其版本信息了。并且在构建中要声明使用spring-boot-maven-plugin这个插件,它会对Maven打包形成的JAR进行二次修改,最终产生符合我们要求的内容结构。
在我们的应用中将要发布一个REST服务,显示一个基本的用户信息,首先定义一个简单的模型类:
package com.levin;
public class Person {
private String name;
private String email;
public Person(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
接下来,我们需要声明一个Spring MVC的Controller,响应对实体的请求:
@Controller
public class ShowPersonController {
@RequestMapping("/showPerson")
public @ResponseBody Person showPerson() {
return new Person("levinzhang","levinzhang1981@gmail.com");
}
}
这个类与我们在使用Spring MVC定义Controller时并无任何差别。接下来,我们需要声明一个主类启动这个应用程序:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String args) {
SpringApplication.run(Application.class, args);
}
}
这个类的main方法中使用了SpringApplication帮助类,并以Application这个类作为配置来启动Spring的应用上下文。在这个类中使用了ComponentScan以及EnableAutoConfiguration注解,其中ComponentScan注解会告知Spring扫描指定的包来初始化Spring
Bean,这能够确保我们声明的Bean能够被发现。EnableAutoConfiguration将会启动自动配置模式,在我们的配置中会将对Tomcat的依赖级联进来,因此在应用启动时将会自动启动一个嵌入式的Tomcat,因为在样例中使用了Spring
MVC,所以也会自动注册所需的DispatcherServlet,这都不需要类似web.xml这样的配置。
在Eclipse中要运行这个应用的话,可以直接以Java
Application的形式来运行这个main函数,此时会启动应用,我们在浏览器中可以看到如下的运行效果,这就是我们想要的REST服务:
在开发调试完成之后,可以将应用打成JAR包的形式,在Eclipse中可以直接使用Maven插件的package命令,最终会形成一个可运行的JAR包。我们使用java
–jar命令就可以运行这个JAR包了。所呈现出的效果与在调试期是一样的。现在看一下这个JAR包解压后的目录结构:
这个JAR包与传统JAR包的不同之处在于里面有一个名为lib的目录,在这个目录中包含了这个简单应用所依赖的其他JAR包,其中也包含内置的嵌入式Tomcat,正是使用它,才能发布服务和访问Web资源。除了我们编写的源码所编译形成的CLASS以外,在org目录下还有许多Spring所提供的CLASS,正是依赖这些CLASS,才能够加载位于lib目录下JAR中的类。这样的加载机制与在OSGi
bundle中声明Bundle-Classpath很类似,不过在OSGi中会由容器来负责加载指定路径下的类。这大致阐述了这样一个JAR包能够发布服务的原因。
如果我们想要使用HTML、JSP等Web资源的话,在Controller中直接返回对应的视图就可以了。
如果我们想要将这个JAR包转换成可以在Servlet容器中部署的WAR的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,此时我们需要声明这样一个类:
public class HelloWebXml extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,只不过在这里不需要编写额外的XML文件了。
如果要将最终的打包形式改为WAR的话,还需要对pom.xml文件进行修改,除了需要将packaging的值修改为war以外,还需要对依赖进行适当的配置(这一部分在Spring
Boot的样例和文档中均未提及,提醒大家注意):
《dependency》
《groupId》org.springframework.boot《/groupId》
《artifactId》spring-boot-starter-web《/artifactId》
《exclusions》
《exclusion》
《groupId》org.springframework.boot《/groupId》
《artifactId》spring-boot-starter-tomcat《/artifactId》
《/exclusion》
《/exclusions》
《/dependency》
在这里需要移除对嵌入式Tomcat的依赖,这样打出的WAR包中,在lib目录下才不会包含Tomcat相关的JAR包,否则将会出现启动错误。另外,在移除对Tomcat的依赖后,为了保证编译正确,还需要添加对servlet-api的依赖,因此添加如下的配置:
《dependency》
《groupId》org.apache.tomcat《/groupId》
《artifactId》tomcat-servlet-api《/artifactId》
《version》7.0.42《/version》
《scope》provided《/scope》
《/dependency》
在这里将scope属性设置为provided,这样在最终形成的WAR中不会包含这个JAR包,因为Tomcat或Jetty等服务器在运行时将会提供相关的API类。此时,执行mvn
package命令就会得到一个WAR文件,我们可以直接将其放到Tomcat下运行(需要7.0.42版本以上)。
以上介绍了基于Spring Boot开发应用的过程,目前它的文档尚不完善,但是在GitHub上有不少的样例,包括与Spring
Data集成访问数据库(关系型以及非关系型)、安全、WebSocket等,读者感兴趣可以下载运行,需要注意的是有些样例中使用的是0.5.0.M6版本,这个版本有问题,运行时会出错,建议手动修改为0.5.0.M7或快照版本。
基于以上的介绍,希望读者能够对Spring
Boot这个新项目有所了解。它简化了JAR包管理和相关基础设施环境的配置,能够帮助我们快速开发Web应用或构建REST服务,希望它能够尽快完善成熟,更多地用于实践,提升开发效率。
SpringBoot项目结构及功能
在IntelliJ使用 Spring Initializer快速创建项目
这是pom文件中父项目,再进一步查看其 spring-boot-starter-parent
发现真正管理Spring Boot应用里面的所有依赖版本的地方在这 spring-boot-dependencies
Spring Boot的版本仲裁中心;
以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
再往下看:
这是spring boot的web场景启动器,只要引入了它,就能帮我们导入了web模块正常运行所依赖的组件;
@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;
@SpringBootConfiguration:Spring Boot的配置类:标注在某个类上,表示这是一个Spring Boot的配置类;
@Configuration:配置类上来标注这个注解;
配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component
@EnableAutoConfiguration:开启自动配置功能;
以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
在src下创建一个controller包,新建一个HelloController类,之后运行springboot,便可以通过 localhost:/8080/hello 来访问hello页面。
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
• application.properties
• application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
application.yml
@Value获取值和@ConfigurationProperties获取值比较
配置文件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
==我们还可以通过spring.config.location来改变默认的配置文件位置==
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
Spring Boot项目目录结构
根目录: com.example.demo
1)启动类( gApplication.java )
推荐放在根目录com.example.demo包下
2)实体类( domain )
3)数据接口访问层( Dao )
4)数据服务接口层( Service )推荐:com.example.demo.service
5)数据服务实现层( Service Implements )推荐: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项目)
springboot框架优点
1、会SpringBoot和Vue是够用的,可以构建各种类型的Web应用程序,为职业生涯带来更多的机会和发展。 2、有效的提升了网站建设的效率,这一点是不容置疑的,框架的特点就是提供了众多的api,功能模块的实现只需要调用起来即可。 3、丰富的工具链为SpringBoot的推广带来了利好。SpringBoot的工具链主要来自于两个方面:1)原有Spring积累的工具链;2)SpringMVC或者其他REST框架使用HTTP协议,使得HTTP丰富的工具成为SpringBoot天然的资源。 4、提供快速开发能力:SpringBoot内置了很多常用的功能,如数据库访问、缓存、安全等,可以让我们快速开发出功能完善的Web应用程序。 5、springboot+vue写一个系统要一个星期左右。用vue重构一个中小型后台管理系统,无论是现在前端还是后端的角度,做一个后台管理系统,开发过程中的代码复用性远远大于开发前台程序,时间在一个星期左右。 1、二者主要区别是:SpringBoot提供极其快速和简化的操作,让Spring开发者快速上手。SpringBoot提供了Spring运行的默认配置。 2、在开发中的区别还是存在的,虽然springboot简化了配置,但并不代表不需要编写配置文件,还是需要在自带的application.yml文件中去编写一些内容;只不过编写的方式变得简单了,虽然简单了,但是和SSM整合的方式还有些区别。 3、它可以省去之前繁琐的配置文件的过程,采用大量的默认配置来简化开发过程。 4、SSM=Spring+SpringMvc+MybatisSpringBoot=Spring+SpringMvc+自动化配置SpringBoot是由Spring+SpringMvc封装而来的,各种配置都自动化了,所以说,没有本质上的差别。 5、SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。 1、但是SpringBoot只是个微框架,没有提供相应的服务发现与注册的配套功能,没有外围监控集成方案,没有外围安全管理方案,所以在微服务架构中,还需要SpringCloud来配合一起使用。 2、由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 3、因为SSM是一个WEB使用框架,覆盖整个使用层,而springboot可以看作是一个启动、配置、快速开发的辅助框架,是针对微服务的。 4、低成本高效率。springboot和vue可以实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,实现简化开发、提升开发效率的经济方面的目的。 5、详情如下:官网的解释Spring在官方首页是这么说的:说使用SpringBoot可以构造任何东西,SpringBoot是构造所有基于Spring的应用程序的起点,SpringBoot在于通过最少的配置为你启动程序。 6、丰富的工具链为SpringBoot的推广带来了利好。SpringBoot的工具链主要来自于两个方面:1)原有Spring积累的工具链;2)SpringMVC或者其他REST框架使用HTTP协议,使得HTTP丰富的工具成为SpringBoot天然的资源。 springboot帮我们做的两件事,一个是通过starter引入我们需要的框架,starter负责引入自己的依赖;另一个是通过autoconfigure生效一些默认的配置,简化我们的使用,这一步是通过spring.factories中定义的配置类实现的。 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 SpringBoot可以轻松创建独立的、生产级的基于Spring的应用程序,您可以“直接运行”这些应用程序。我们对Spring平台和第三方库采取了固执的观点,因此您可以轻松上手。 在SpringBoot中使用异步调用是很简单的,只需要使用@Async注解即可实现方法的异步调用。采用@EnableAsync来开启异步任务支持,另外需要加入@Configuration来把当前类加入springIOC容器中。增加一个service类,用来做积分处理。
springboot是bs还是cs
是bs结构
从本质上来说,springboot是一个专注于框架的框架。Spring Boot就是对各种框架的整合,让他们集成在一起更加简单,简化了我们在集成过程中的模板化配置,它做了那些没有它你自己也会去做的Spring Bean配置。
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。
SpringBoot目录结构
以Maven工程形式新建一个springboot项目。目录结构如下:
重点介绍resources目录:
在resources文件夹或与其并列的文件夹下建立public文件夹,在public文件夹下的html文件可以通过浏览器中输入文件+后缀名的方式直接访问的.
一、public文件夹(需要自己手动新建),就相当于在eclipse的web项目中的WEB-INF文件夹外的文件,是不需要通过服务器内部进行访问的。
二、templates文件夹,是放置模板文件的,因此需要视图解析器来解析它。所以必须通过服务器内部进行访问,也就是要走控制器--服务--视图解析器这个流程才行。
三、static文件夹,既不能直接访问,也不能通过服务器访问到。因此,这个文件夹,可能是放一些css、图片这样的文件供服务器内部引用。
application.properties文件,全局配置文件。
才疏学浅之处,切莫在意。
——2019.6.10 下午

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






