springboot 搭建项目快速入门

本贴最后更新于 3509 天前,其中的信息可能已经渤澥桑田

最近项目组切springboot微服务 ,相关资料文档比较少都是通过官网提供的文档进行摸索的,如果你还不知道springboot是什么,可以先看一下这篇文章
(http://www.infoq.com/cn/articles/microframeworks1-spring-boot/)看完 了,你就能大体知道什么是springboot以及它能给我们带来什么便捷功能
本文实例都是基于maven项目进行搭建的。

首先需要在自己的主POM中添加如下代码(个人习惯最外层的pom.xml只是壳子),这也是最关键的一步:

    org.springframework.boot
    spring-boot-starter-parent
    1.2.7.RELEASE


其次就是创建一个项目启动类,该类必须满足3个条件 :
1. 类注解@SpringBootApplication
2. 实现一个main方法
3. 在/main/java/resource目录下创建项目核心配置文件application.properties(springboot同时也提供了yml的格式,so用起来非常爽)

 Bootstrap.java

 

@SpringBootApplication
@PropertySources({
//默认配置 @PropertySource("classpath:dbconfig.properties"), //tomcat目录下 @PropertySource(value = "file:${CATALINA_BASE}/conf/dbconfig.properties", ignoreResourceNotFound = true), //${user.dir} 运行在项目同目录下 @PropertySource(value = "file:${user.dir}/conf/dbconfig.properties", ignoreResourceNotFound = true),

})
@Slf4j
public class Bootstrap extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {

@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Bootstrap.class); } /** * spring boot 服务主入口 * * @param args */ public static void main(String[] args) { ApplicationContext context = SpringApplication.run(Bootstrap.class, args); if (log.isInfoEnabled() && context instanceof EmbeddedWebApplicationContext) { int port = ((EmbeddedWebApplicationContext) context).getEmbeddedServletContainer().getPort(); String contextPath = context.getApplicationName(); String url = String.format(Locale.US, "http://localhost:%d%s", port, contextPath); //提示项目用到的相关配置文件 log.info(" =========== ${user.dir}={} =========== ", System.getProperty("user.dir")); log.info(" =========== ${java.io.tmpdir}={} =========== ", System.getProperty("java.io.tmpdir")); String dashes = "------------------------------------------------------------------------"; log.info("Access URLs:\n{}\n\tLocal: \t\t{}\n{}", dashes, url, dashes); } } @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.addErrorPages( new ErrorPage(HttpStatus.BAD_REQUEST, "/error/notfound"), new ErrorPage(HttpStatus.NOT_FOUND, "/error/notfound") ); }

}

@PropertySources 这个注解 相信大家并不陌生,它是来自springframework的,用来加载资源文件的,这类我的习惯是分层读取配置文件,先读取classpath 、CATALINA_BASE、user.dir 依次的 顺序 这样读得好处是启动动态覆盖的作用,方便部署生产环境配置文件,ignoreResourceNotFound 变量是用来忽略资源不存在的报错

 

 

application.yml 

 

 

#server settings
server:
    port : 8082
    address : 127.0.0.1
    sessionTimeout : 30
    #contextPath : /
    #Tomcat specifics
    tomcat:
        accessLogEnabled : false
        protocolHeader : x-forwarded-proto
        remoteIpHeader : x-forwarded-for
        basedir:
        backgroundProcessorDelay : 30 # secs
logging:
    config : classpath:logback.xml
    level :
      org.springframework : ERROR
      com.woawi: DEBUG

spring :
jpa :
database : MYSQL
show-sql : true
generate-ddl : true
hibernate :
ddl-auto : none
naming-strategy : org.hibernate.cfg.ImprovedNamingStrategy
properties:
hibernate :
dialect : org.hibernate.dialect.MySQL5Dialect

我对yml文件情有独钟,所以这里并没有采用properties的方式配置,这里我只是简单的配置了一下常用的tomcat  logback  springdata,该配置文件的配置很多 如需要用到其他配置请自行查阅官方提供的在线文档

直接搜索标题Appendix A. Common application properties

 即可查到application的配置文件属性

 


注:信息文档可以参考
http://projects.spring.io/spring-boot/

http://docs.spring.io/spring-boot/docs/1.2.7.RELEASE/reference/htmlsingle/(在线springboot文档 1.2.7的)

 

https://github.com/cyzaoj/antc实例下载

 

 

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    947 引用 • 1460 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 350 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 537 关注
  • OneDrive
    2 引用 • 4 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1282 回帖 • 1 关注
  • AWS
    11 引用 • 28 回帖 • 8 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 1 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    291 引用 • 4495 回帖 • 661 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 52 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 2 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖 • 5 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 33 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 7 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 4 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 196 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 662 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 59 回帖 • 3 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖 • 1 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 534 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 182 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    44 引用 • 208 回帖 • 1 关注
  • OnlyOffice
    4 引用 • 15 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注