SpringBoot第一课

来源:互联网 发布:photoshop日历制作软件 编辑:程序博客网 时间:2024/05/17 01:03

入行java开发已经两年了,在这些年的工作中,尤其是最近,对于技术有了一定的感悟。随着做的项目变多,发现一个问题就是重复性的编码,公司业务不断变化,新的项目一个又一个,在自己板砖的过程中发现有好多重复性的工作,有的基本一样有的大同小异,这些功能的重复性编写让人感觉到很枯燥。个人感觉好友口中的SpringBoot是一个很好的解决方法或者是Dubbo,只需要对于系统再进一步的架构,拆分成服务的形式进行管理,那么对于这些重复性的功能或者说可以再利用的功能就像是在搭积木,与新的功能模块(服务)可以构建一个新的项目。所有为了工作的需求,为了追赶技术的脚步,从今天起就要好好研究SpringBoot了,有时间再看Dubbo


通过百度,查资料等基本了解SpringBoot 可以帮助我们快速的构建服务,而不同的多个服务拼装可以实现我们自己的业务。它不同于传统的JavaWeb项目,新手上路,开始我的第一页。


这篇文章是记录的自己的自学路程,没有参加系统的培训,只不过是在问度娘,一步步开始,先来照猫画虎

今天我对于SpringBoot的理解是:新的Spring框架,遵循约定优于配置的原则(百度的,灰度认知),帮助我们快速构建服务,服务的启动或者发布不是在Tomcat等web服务器中而是在构建的系统中内嵌Tomcat,以类似于javaSe的main方法的形式去启动。个人感觉这种方式很好,以后再部署项目只需要在我们的Linux服务器中安装java环境,然后上传我们编译的jar包到指定目录,然后编写自己的Server启动脚本(其实很简单以setsid的方式执行java -jar 启动)发布管理,异常方便

在网上看到的教程什么的有一些,但是都没怎么特别明白,所以还是自己一步一步来,我的开发环境:JDK1.7 MAVEN3.1  编译器用的Myeclipse(本篇文章比较适合SpringBoot想学,maven又只懂一点点的兄弟们哈,因为我也只懂一点点)。新建一个web项目,在起好名字之后别忘了勾选Maven支持,






创建好项目之后就通过Maven添加我们SpringBoot的依赖包,主要就是springboot的支持的pom配置他会自动下载相关的SpringMVC和内嵌Tomcat和Json相关的jar包,今天

是自己的第一课,今天我的目的就是运行起自己的第一个SpringBoot项目,下面是我的pom文件内容

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>SpringBoot1</groupId>  <artifactId>SpringBoot1</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.4.0.RELEASE</version>    </parent>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>    </dependencies>    <build>    <plugins>    <plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>    </plugin>    </plugins>    </build></project>
这里需要注意的就是引入parent:org.springframework.boot 就是让我们的pom继承springboot的pom就可以下载springboot在外网对应项目中pom所含有的jar包,还有就是下面的depends中加入spring-boot-starter-web的依赖,还有就是添加插件maven编译的插件有了这个插件我们才可以用编译器mvn install或者到项目目录可以看到pom配置文件的层级在dos窗口执行mvn install进行项目的编译

接下来了解一下如何编写和启动我们的项目(注意在我们的一个服务中只有一个main方法),创建一个自己的类,在类上添加注解;@Controller和

@EnableAutoConfiguration,然后再加上一个main方法,main方法中执行:SpringApplication.run(当前类.class, args);即可运行,下面是我的例子

@Controller@EnableAutoConfigurationpublic class StartDemoController {@ResponseBody@RequestMapping("/")String home(){return "Study SpringBoot First Time!!";}@RequestMapping("/test1/{msg}")public void testFunc1(HttpServletRequest request,HttpServletResponse response,@PathVariable("msg") String message){//response.setCharacterEncoding("utf8");response.setHeader("Content-type", "text/html;charset=UTF-8");  try {System.out.println("前台参数:"+message);response.getWriter().write("您所输入的参数为:"+message);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {SpringApplication.run(StartDemoController.class, args);}}
直接运行该main方法即可执行。在浏览器中输入:127.0.0.1:8080/即可看到Study SpringBoot First Time字眼,这是我们的home方法返回的数据。这里需要解释几个地方(也是

自己看别人文章知道和学习到的)添加@controller注解就是为了标示我们的controller不用多说,EnableAutoConfiguration注解的目的就是自动识别应用程序类型,因为我们有

controller注解会被识别为web程序然后以web应用的形式在内嵌tomcat中启动,启动的方式就是运行:SpringApplication.run(StartDemoController.class , args);,这句话顾名思义就是spring应用程序启动,对于项目的运行还有另一种方式,下面引入。先提出一个问题:有没有发现现在就是一个controller,在这个controller中定义的请求都可以映射出来

那么我再加一耳光controller可以吗,本人自己尝试,答案是不行,所有就有了下面的这种启动方法,而且这个应该才是比较实际的编码方式(虽然我们是微服务,但是不可能就是一个controller,明显不现实)。下面先展示一下写法再说具体怎么写的问题


下面是启动方法:

package ren.controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class applicationStart {public static void main(String[] args) {SpringApplication.run(applicationStart.class, args);}}
运行对应的main方法即可启动我们的程序。而他所发布出去的服务就是我们该项目中其他的被@RestController注解标示的类,将他们里面含有

@RequestMapping(value="/func1" ,method=RequestMethod.GET)的方法映射成对应地址的请求

@RestControllerpublic class ServiceAddController {@RequestMapping(value="/func1" ,method=RequestMethod.GET)public void serviceS1Func(HttpServletRequest request,HttpServletResponse response) throws IOException{response.setHeader("Content-type", "text/html;charset=UTF-8");response.getWriter().write("测试验证,刚刚执行的controller只是一个用于启动的类,同时他会加载其他的被注解的扫描" +"加入容器中的类,所以,基本上原来的开发手段都还是可用的哈哈哈哈");}}

在这里,再次提及那个问题,不来是哪种启动形式,一个服务中只能有一个main方法不然编译报错

服务配置文件怎么加之前的内容真的是入门中的入门,仔细一看或者一运行就会发现问题关于服务的发布方式难道只能默认么,我不想发布懂啊8080端口,我不想没有项目名称,所以这些还是应该需要我们进行配置的(虽然约定优于配置,但是该有的配置还是要有的,因为需求因人而异)下面就说说关于端口和服务名称的配置修改:

在ClassPath下添加一个一个application.properties的配置文件,内容如下:

server.port=8081
server.context-path=/demo2

即可以8081端口服务名demo2进行启动

对于添加这个文件的时候所说的classpath很好理解class文件的根路径,但是在我们的编译器中进行添加的时候就有问题了,因为添加了maven的支持不同于传统的web项目

添加classpath的路径有所变化,不然会一直没有效果,因为我看的资料是用的idea所以我再用myeclipse时折腾好久,添加路径如下


这里需要注意,在test下也需要添加,不然在mvn编译的时候报错

另外在用Myeclipse的maven插件编译时可能报错需要在pom的build里面加入:<defaultGoal>compile</defaultGoal>

好了,自己的第一课到这下课了,又可以打LoL了

原创粉丝点击