SpringBoot入门

 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。——抄袭百度百科,以下简称SB。

        我也是一个正式工作没多久的小程序员,最近看了也快一个月的sb,平时学的东西都是零零散散的记在书里、注释在代码里、写在笔记里,感觉过于分散,以后想拿出来看看都不方便。干脆就直接把博客当笔记,和大家分享一下从入门到放弃的经验吧。

        初学了1个月的sb,对比起SpringMVC,我觉得是简化了许多配置,简化了许多项目依赖的管理,完成了很多框架的整合,也不用写许多原生的代码,很多东西SB都帮你默认配置好了,甚至连web容器都不需要,集成了许许多多常用的框架与工具,不需要我们再去东拼西凑找jar包、找依赖、复制修改配置文件了。

打个比方,之前搭建一个web项目,你需要做spring和hibernate之类的orm框架整合、需要做spring和strut2的整合、需要做log4j和slf4j的整合等等等等…………一大堆jar包和配置文件等你去管理。而用了SpringBoot之后,就基本什么都不用去整合了,SB全部帮你弄好了,默认的配置文件也是很人性化的,能满足大部分需求了。

        接下来就在一起入坑吧,以下是最简单的默认sb的项目目录结构

    静态资源目录,主要存放的是jsp页面,js,图片,配置文件等。SB会默认帮我们创建一个空的配置文件application.properties,接下来看看Helloworld代码


package com.kazz;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@SpringBootApplication
public class HelloworldApplication{
 
    public static void main(String[] args) {
        SpringApplication.run(HelloworldApplication.class, args);
    }
 
    @RequestMapping("/")
    public String hello() {
        return "hello,springboot";
    }
 
}

        代码很简单,就是一个主函数启动程序,再加上一个SpringMVC里面常用的@RestController和@RequestMapping("/")注解,拦截根目录下的请求,此时程序没有部署到任何web容器,直接点击运行按钮,启动程序,控制台输出日志如下

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.1.RELEASE)
 
2017-03-19 23:28:22.697  INFO 3920 --- [           main] com.kazz.HelloworldApplication           : Starting HelloworldApplication on DESKTOP-MQ8Q6N3 with PID 3920 (E:\eclipse-springboot\helloworld\target\classes started by Kazz in E:\eclipse-springboot\helloworld)
2017-03-19 23:28:22.699  INFO 3920 --- [           main] com.kazz.HelloworldApplication           : No active profile set, falling back to default profiles: default
2017-03-19 23:28:22.744  INFO 3920 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4cc451f2: startup date [Sun Mar 19 23:28:22 CST 2017]; root of context hierarchy
2017-03-19 23:28:24.539  INFO 3920 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-03-19 23:28:24.548  INFO 3920 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2017-03-19 23:28:24.549  INFO 3920 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.5
2017-03-19 23:28:24.615  INFO 3920 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-03-19 23:28:24.615  INFO 3920 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1875 ms
2017-03-19 23:28:24.722  INFO 3920 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-03-19 23:28:24.727  INFO 3920 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-03-19 23:28:24.728  INFO 3920 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-03-19 23:28:24.728  INFO 3920 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-03-19 23:28:24.728  INFO 3920 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-03-19 23:28:24.932  INFO 3920 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4cc451f2: startup date [Sun Mar 19 23:28:22 CST 2017]; root of context hierarchy
2017-03-19 23:28:24.979  INFO 3920 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String com.kazz.HelloworldApplication.hello()
2017-03-19 23:28:24.982  INFO 3920 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-03-19 23:28:24.982  INFO 3920 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-03-19 23:28:25.001  INFO 3920 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-19 23:28:25.001  INFO 3920 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-19 23:28:25.045  INFO 3920 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-19 23:28:25.143  INFO 3920 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-03-19 23:28:25.199  INFO 3920 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-03-19 23:28:25.203  INFO 3920 --- [           main] com.kazz.HelloworldApplication           : Started HelloworldApplication in 2.831 seconds (JVM running for 3.324)
2017-03-19 23:28:28.628  INFO 3920 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-03-19 23:28:28.628  INFO 3920 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2017-03-19 23:28:28.641  INFO 3920 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 13 ms

        打开浏览器,输入地址http://localhost:8080/,显示的页面如下


可见,我没有做任何的配置,SB程序就自动使用Tomcat启动,上下文根为/,端口默认8080

这样一来,helloworld程序就搞定了,是不是很简单
 

python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值