springboot-2.springboot实践_Java小海.的博客-程序员秘密_springboot实践

技术标签: spring  java  后端  


上一节中已经搭建了一个简单的springboot项目,它也是springboot官方的demo,接下来通过学习springboot官方的提出来几点注意的地方,来改造第一个demo。以下是我汇总的几点,这里就称呼它们为springboot最佳实践吧。

springboot最佳实践

1.官方建议一个项目建立一个package,不推荐使用默认包,使用默认包可能导致一些 问题(在使用 @ComponentScan, @EntityScan or @SpringBootApplication注解的情况下), 因为它会扫描所有的jar包。

2.官方建议main类放在其他类上面的根包中, @EnableAutoConfiguration 注解通常放于 main类中,它的意图是告诉springboot,根据您添加的jar依赖项,“猜测”您将如何配置Spring。

3.通常建议在main方法类上加上 @Configuration ,我们不需要在每个类上添加 @Configuration 注解,只需 使用 @Import 注解去导入其他配置类即可。

4.如果一定要使用xml配置,官方建议应以 @Configuration 注解开始,然后在附加 @ImportResource 注解去加载xml配置。

5.使用 @ComponentScan 注解,springboot将可以自动发现所有的spring组件,包括 @Configuration 类。

6.springboot还有另外一个注解 @SpringBootApplication, 它等价于 @Configuration, @EnableAutoConfiguration and @ComponentScan 三个注解的组合。

demo改造

根据最佳实践说明,我们将会第一个demo程序进行改造。首先新增Java包com.ctosb.springboot,然后将Example.java类,拆分成两个类Application.java和ExampleController,并分别放于com.ctosb.springboot和com.ctosb.springboot.controller包中。

1.Application.java是main函数启动类,内容如下

package com.ctosb.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * 官方建议一个项目建立一个package,不推荐使用默认包,使用默认包可能导致一些 问题(在使用 @ComponentScan, @EntityScan
 * or @SpringBootApplication注解的情况下), 因为它会扫描所有的jar包。<br>
 * 官方建议main类放在其他类上面的根包中, @EnableAutoConfiguration 注解通常放于
 * main类中,它的意图是告诉springboot,根据您添加的jar依赖项,“猜测”您将如何配置Spring。<br>
 * 通常建议在main方法类上加上 @Configuration ,我们不需要在每个类上添加 @Configuration 注解,只需 使用 @Import
 * 注解去导入其他配置类即可。<br>
 * 如果一定要使用xml配置,官方建议应以 @Configuration 注解开始,然后在附加 @ImportResource 注解去加载xml配置。<br>
 * 使用 @ComponentScan 注解,springboot将可以自动发现所有的spring组件,包括 @Configuration 类。<br>
 * springboot还有另外一个注解 @SpringBootApplication,
 * 它等价于 @Configuration, @EnableAutoConfiguration and @ComponentScan 三个
 * 注解的组合。如下三个注解可直接使用 @SpringBootApplication 代替。<br>
 * @author liliangang-1163
 * @date 2017年8月31日下午8:30:07
 */
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

	public static void main(String[] args) throws Exception {
		SpringApplication.run(Application.class, args);
	}
}
复制代码

2.ExampleController是springmvc层的Controller类,内容如下

package com.ctosb.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ExampleController {

	@RequestMapping("/")
	String home() {
		return "Hello World!";
	}
}
复制代码

启动应用程序和验证步骤和第一篇一致,这里不再赘述。

源代码地址:github.com/Alan3058/sp… commit号:459577659105c1a479c0e4126450c369dfd12e11

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q1472750149/article/details/121421115

智能推荐

pytorch学习笔记(三)用nn.cross_entropy所遇到的问题_hellosonny的博客-程序员秘密

Mnist数据集的图片尺寸一般是28*28 = 784,这里模拟一下搭建一个神经元的网络来进行预测和loss的计算,代码如下。import torchfrom torch import nnimport mathimport torch.nn.functional as Fclass Mnist_net(nn.Module): def __init__(self): ...

通过sftp由本地向Linux上传文件&文件夹-程序员秘密

通过sftp由本地向Linux上传文件&amp;文件夹有时候我们需要将本地的一些文件上传到虚拟机的Linux或云服务器中。本文介绍一种比较方便的安全文件传输协议SFTP。本文主要介绍如何使用sftp,具体安装另需百度1. 启用sftp [email protected]地址 #username就是目的主机的用户名,ip地址就是目的主机的ip地址2. 上传文件sftp有很多命令,我们可以输入help来查看。下面介绍几个比较常用的命令查看当前本地路径和目的主机路径。当我们想查看当前目的主机的路径使

西南科技计算机在线自测,西南科技大学2017春季第一学期高等数学1在线自测答案..._夏种子的博客-程序员秘密

技校网专门为您推荐的类似问题答案问题1:西南科技大学 西南科技大学 厦门大学 上海海事大学的法硕实力四川建材学校-1978年四川建材学院-1993年西南工学院 遂宁农业中专-绵阳经济高专 2001两校合并为年西南科技大学: 全校有3个硕士点,1个省重点学科,本科专业数量比专科专业还少,学校70%学生是专科生,正副教授100多人,一直是四川以中专升格大专,以专科教育为主的地方学校,2002年起,原专...

SpringCloudAlibaba生态环境搭建一:Nacos单机版_nacos 切换成单机_daidavid_csdn的博客-程序员秘密

搭建Nacos版本1.4.1下载nacos安装包 nacos1.4.1安装单机nacos1、解压,进入nacos目录tar -zxvf nacos-server-1.4.1.tar.gzcd nacos2、单机启动nacosnohup bin/startup.sh -m standalone3、访问nacos管理端:http://ip:8848/nacos 默认用户名密码:nacos/nacosNacos注册中心架构核心功能...

C#之方法的可变参数(params)_c# 数组元素变参数_孤行者程序之路的博客-程序员秘密

今天笔者看了网上的很多关于基础的可变参数的用法,说实话,以我的感觉很多人都没有把这个问题说清楚。有一些所谓大神更是将数组作为实参传递给一个可变参数作为可变参数的使用案例来讲。虽然这也是可以的,但是遇到像我这样的新手不禁会问:“如果只是将数组传递给一个可变参数数组,那么完全不必用params关键字修饰,直接将实参数组传递给形参数组不就行了吗,这怎么又能说明可变参数的应用必要性呢。”。笔者说一下自

数学概念: 导数和切线方程_万万2014的博客-程序员秘密

导数是微积分的重要基础概念。当函数y= f(x)的自变量x在一点x0上产生一个增量Δx, y 方向上的增量Δy与Δx的比值在Δx趋于0时的极限如果存在。那么这个极限就是x0处的导数。即为f‘(x0)。下面是不才今天早上做的一个简单的函数求导问题。错误之处请指出。涉及到复合函数求导问题。我们可以拆分。比如 对于x^2+1 求开方。f[g(x)]中,设g(x)=u,则f[g(x)]=...

随便推点

关于apache 2.4.X以后版本的虚拟主机配置问题_小汽车的博客-程序员秘密

Apache升级后,虚拟主机配置发生了改变,结果旧配置文件引起了403错误。Apache AH01630: client denied by server configuration 错误解决办法。

做web网站开发的流程、步骤_web开发步骤_阳光100!!!!的博客-程序员秘密

最近自己在学习一些web开发方面的知识,想把自己学习到的内容整理一下,所以就记录再博客上,如果有不对的地方还请大家指出,我会及时改正。第一步:需要了解业务需求,分析需求。第二步:根据需求,建数据库,然后建表,明确字段,例如User表,包含用户id、姓名、年纪等。第三步:根据数据库表,写实体类。例如Class User,仿照User表的字段信息写Class Use...

ECharts散点图大小调整_祈澈菇凉的博客-程序员秘密

在业务需求中,有时候会遇到ECharts散点图,现在记录一下,今天解决了一个小问题,ECharts散点图大小调整。话不多说,首先上图:此图实现的代码如下:五分钟上手之散点图系列文章【前端图表】echarts散点图鼠标划过散点显示信息:https://blog.csdn.net/qq_36538012/article/details/8...

虾米音乐mac端应用代码注释惊现“穷逼vip”,是程序员干的_虾米音乐代码注释_打杂人的博客-程序员秘密

http://www.guancha.cn/industry-science/2017_11_19_435527_s.shtml11月19日,某技术论坛出现了一篇讨论阿里旗下虾米音乐客户端的帖子,引发了网友争议。发帖人称,虾米音乐客户端的程序员竟然称一些短期VIP客户为“穷逼”VIP。。。事情其实是酱紫的。。。在写代码的时候,为了让同事看懂这串代码的作用,程序员会对这行代码

损失函数和正则化 Loss Function& Regularization_loss正则化_Stockholm_Sun的博客-程序员秘密

By Stockholm_Sun我们来谈谈关于深度学习的概念,损失函数。这次我将给出一些例子来解释。(Slide From Stanford CS231n)显然,现在的情况是:猫没有被正确分类,车是对的,青蛙完全错了。为了使它们完全正确,我们引入了损失函数。现存的损失函数还是比较多样的,这里介绍两种。SVM lossSVM损失函数具有如下形式:由于自变量的变化像一个合页,所以又...

推荐文章

热门文章

相关标签