您的位置:澳门新葡萄京最大平台 > 澳门新葡萄京 > 澳门新葡萄京:Spring boot入门篇

澳门新葡萄京:Spring boot入门篇

发布时间:2019-10-21 00:20编辑:澳门新葡萄京浏览(160)

    1. Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid    application  development)成为领导者。
       可以 Maven | Gradle | Ant | Starters构建项目,参考: 可以选择Maven或Gradle生成Demo,Spring boot微服务架构结合Docker容器运行。
        软件版本运行要求请参考官网: Spring boot官网   本实例软件版本:JDK1.7 + Spring boot 1.3.5 + Spring 4.2.6 

      常用的starter以及用处可以列举如下:

    (1)spring-boot-starter: 这是核心Spring Boot starter,提供了大部分基础功能,其他starter都依赖于它,因此没有必要显式定义它。

    (2)spring-boot-starter-actuator:主要提供监控、管理和审查应用程序的功能。

    (3)spring-boot-starter-jdbc:该starter提供对JDBC操作的支持,包括连接数据库、操作数据库,以及管理数据库连接等等。

    (4)spring-boot-starter-data-jpa:JPA starter提供使用Java Persistence API(例如Hibernate等)的依赖库。

    (5)spring-boot-starter-data-*:提供对MongoDB、Data-Rest或者Solr的支持。

    (6)spring-boot-starter-security:提供所有Spring-security的依赖库。

    (7)spring-boot-starter-test:这个starter包括了spring-test依赖以及其他测试框架,例如JUnit和Mockito等等。

    (8)spring-boot-starter-web:该starter包括web应用程序的依赖库。

    2.Maven构建项目pom代码

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4 
      5     <groupId>ygnet</groupId>
      6     <artifactId>boot</artifactId>
      7     <version>0.0.1-SNAPSHOT</version>
      8     <packaging>jar</packaging>
      9 
     10     <name>Springboot</name>
     11     <url>http://maven.apache.org</url>
     12     
     13     <properties>
     14         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     15         <java.version>1.7</java.version>
     16     </properties>
     17     
     18     <!-- Spring Boot 启动父依赖 -->
     19     <parent>
     20         <groupId>org.springframework.boot</groupId>
     21         <artifactId>spring-boot-starter-parent</artifactId>
     22         <version>1.3.5.RELEASE</version>
     23         <relativePath />
     24     </parent>
     25     <dependencies>
     26         <dependency>
     27             <groupId>junit</groupId>
     28             <artifactId>junit</artifactId>
     29             <version>4.12</version>
     30             <scope>test</scope>
     31         </dependency>
     32         <dependency>
     33           <groupId>org.springframework</groupId>
     34           <artifactId>spring-test</artifactId>
     35           <version>4.2.6.RELEASE</version>
     36         </dependency>
     37             
     38         <!-- Spring Boot web依赖 -->
     39         <dependency>
     40             <groupId>org.springframework.boot</groupId>
     41             <artifactId>spring-boot-starter-web</artifactId>
     42         </dependency>
     43         <dependency>
     44             <groupId>org.springframework.boot</groupId>
     45             <artifactId>spring-boot-starter</artifactId>
     46         </dependency>    
     47         <!--dependency>
     48             <groupId>org.springframework.boot</groupId>
     49             <artifactId>spring-boot-starter-test</artifactId>
     50             <scope>test</scope>
     51         </dependency-->
     52         <dependency>
     53             <groupId>org.springframework.boot</groupId>
     54             <artifactId>spring-boot-starter-jdbc</artifactId>
     55         </dependency>
     56         <dependency>
     57             <groupId>org.postgresql</groupId>
     58             <artifactId>postgresql</artifactId><scope>runtime</scope>
     59         </dependency>
     60         <dependency>
     61             <groupId>org.springframework.boot</groupId>
     62             <artifactId>spring-boot-starter-actuator</artifactId>
     63         </dependency>
     64     </dependencies>
     65     <build>
     66         <pluginManagement>  
     67             <plugins>  
     68               <plugin>  
     69                 <groupId>org.eclipse.m2e</groupId>  
     70                 <artifactId>lifecycle-mapping</artifactId>  
     71                 <version>1.0.0</version>  
     72                 <configuration>  
     73                   <lifecycleMappingMetadata>  
     74                     <pluginExecutions>  
     75                       <pluginExecution>  
     76                         <pluginExecutionFilter>  
     77                           <groupId>org.apache.maven.plugins</groupId>  
     78                           <artifactId>maven-dependency-plugin</artifactId>  
     79                           <versionRange>[2.0,)</versionRange>  
     80                           <goals>  
     81                             <goal>copy-dependencies</goal>  
     82                           </goals>  
     83                         </pluginExecutionFilter>  
     84                         <action>  
     85                           <ignore />  
     86                         </action>  
     87                       </pluginExecution>  
     88                     </pluginExecutions>  
     89                   </lifecycleMappingMetadata>  
     90                 </configuration>  
     91               </plugin>  
     92             </plugins>  
     93         </pluginManagement>
     94         <plugins>
     95             <!-- 打Jar包(META-INF) -->
     96             <plugin>
     97                 <groupId>org.apache.maven.plugins</groupId>  
     98                 <artifactId>maven-jar-plugin</artifactId>  
     99                 <configuration>  
    100                     <archive>  
    101                         <manifest>  
    102                            <addClasspath>true</addClasspath>  
    103                            <classpathPrefix>lib/</classpathPrefix>  
    104                            <mainClass>yg.boot.App</mainClass>  
    105                         </manifest>  
    106                     </archive>  
    107                 </configuration>  
    108             </plugin>
    109             <!-- 项目资源文件 -->
    110             <plugin>  
    111                 <groupId>org.apache.maven.plugins</groupId>  
    112                 <artifactId>maven-resources-plugin</artifactId>  
    113                 <version>2.5</version>  
    114                 <executions>  
    115                     <execution>  
    116                         <phase>compile</phase>  
    117                     </execution>  
    118                 </executions>  
    119                 <configuration>  
    120                     <encoding>${project.build.sourceEncoding}</encoding>  
    121                 </configuration>  
    122             </plugin>
    123             <!-- 是否启动测试 -->
    124             <plugin>
    125                 <groupId>org.apache.maven.plugins</groupId>  
    126                 <artifactId>maven-surefire-plugin</artifactId>
    127                 <version>2.17</version> 
    128                 <configuration>
    129                   <skipTests>true</skipTests>  
    130                 </configuration>
    131             </plugin>
    132             <!-- 复制依赖包到项目lib文件夹下 -->
    133             <plugin>  
    134                 <groupId>org.apache.maven.plugins</groupId>  
    135                 <artifactId>maven-dependency-plugin</artifactId>  
    136                 <version>2.8</version>  
    137                 <executions>  
    138                     <execution>  
    139                         <phase>package</phase>  
    140                         <goals>  
    141                             <goal>copy-dependencies</goal>  
    142                         </goals>  
    143                     </execution>  
    144                 </executions>
    145                 <configuration>
    146                     <outputDirectory>${project.basedir}/lib</outputDirectory>
    147                     <includeScope>compile</includeScope>  
    148                 </configuration>  
    149             </plugin>
    150             <!-- Spring boot 打包 -->
    151             <plugin>
    152                 <groupId>org.springframework.boot</groupId>
    153                 <artifactId>spring-boot-maven-plugin</artifactId>
    154             </plugin>
    155         </plugins>
    156     </build>
    157 </project>
    

    3.Controller

    Spring Boot框架提供的机制便于工程师实现标准的RESTful接口,编写Controller代码,首先我们要在pom文件中添加对应的starter,即spring-boot-starter-web,对应的xml代码示例为:
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。
    @RequestMapping("/test")表示该控制器处理所有“/test”的URL请求,具体由那个函数处理,要根据HTTP的方法来区分:GET表示查询、POST表示提交、PUT表示更新、DELETE表示删除。
    Restful设计指南请参考:RESTFul Controller的角色,大家可以看到,我这里将很多业务代码混淆在Controller的代码中。实际上,根据程序员必知之前端演进史一文所述Controller层应该做的事是: 处理请求的参数 渲染和重定向 选择Model和Service 处理Session和Cookies,我基本上认同这个观点,最多再加上OAuth验证(利用拦截器实现即可)。而真正的业务逻辑应该单独分处一层来处理,即常见的service层;

     java代码:

     1 package yg.boot.action;
     2 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
     3 import org.springframework.web.bind.annotation.RequestMapping;
     4 import org.springframework.web.bind.annotation.RestController;
     5 @RestController
     6 @EnableAutoConfiguration
     7 @RequestMapping("/test")
     8 public class AppController {    
     9     @RequestMapping("/sayhello")
    10     public String sayHello(){
    11         return "Hello World!";
    12     }
    13 }
    

    4.Spring Boot启动  

      @SpringBootApplication是这个注解是该应用程序入口的标志,然后有熟悉的main函数,通过SpringApplication.run(xxxApplication.class, args)来运行Spring Boot应用。打开SpringBootApplication注解   可以发现,它是由其他几个类组合而成的:@Configuration

    (等同于 spring中的xml配置文件,使用Java文件做配置可以检查类型安全)、@EnableAutoConfiguration(自动配置)、@ComponentScan(组件扫描,大家非常熟悉的,可以自动发现和装配一些Bean)

       pom文件里可以看到,org.postgresql这个库起作用的范围是runtime,也就是说,当应用程序启动时,如果Spring Boot在classpath下检测到org.postgresql的存在,会自动配置postgresql数据库连接。

    Application.properties代码:

     1 # DataSource settings
     2 spring.datasource.url=jdbc:postgresql://localhost:5432/jcbk
     3 spring.datasource.username=jcbk
     4 spring.datasource.password=123456
     5 spring.datasource.driver-class-name=org.postgresql.Driver
     6 
     7 # Tomcat Server settings (ServerProperties)
     8 server.port= 9080
     9 server.address= 127.0.0.1
    10 server.sessionTimeout= 30
    11 server.contextPath= /
    12 
    13 # Tomcat specifics
    14 tomcat.accessLogEnabled= false
    15 tomcat.protocolHeader= x-forwarded-proto
    16 tomcat.remoteIpHeader= x-forwarded-for
    17 tomcat.basedir=
    18 tomcat.backgroundProcessorDelay=30 # secs
    

    java代码:

     1 package yg.boot;
     2 import org.springframework.boot.SpringApplication;
     3 import org.springframework.boot.autoconfigure.SpringBootApplication;
     4 /**
     5  * Hello world!
     6  */
     7 @SpringBootApplication
     8 public class App {    
     9     public static void main(String[] args ){
    10         SpringApplication.run(App.class,args);
    11     }
    12 }
    

    直接运行App后,结果如下图所示。启动后访问, 输出 Hello World!,如下所示:

    澳门新葡萄京 1

    5.项目打包

    项目打包使用maven-jar-plugin插件即可,生成boot-0.0.1-SNAPSHOT.jar。spring-boot-maven-plugin插件将boot-0.0.1-SNAPSHOT.jar重命名为boot-0.0.1-SNAPSHOT.jar.original,然后生成新boot-0.0.1-SNAPSHOT.jar包,目录结构为:
    +---yg
              boot
    +---org
              springframework
                  boot
                     loader
    +----lib
    +----META-INF
    +----application.properties

    Meta-inf代码:

     1 Manifest-Version: 1.0
     2 Implementation-Vendor: Pivotal Software, Inc.
     3 Implementation-Title: Springboot
     4 Implementation-Version: 0.0.1-SNAPSHOT
     5 Implementation-Vendor-Id: ygnet
     6 Built-By: oy
     7 Build-Jdk: 1.7.0_45
     8 Class-Path: lib/spring-test-4.2.6.RELEASE.jar lib/spring-core-4.2.6.RE
     9  LEASE.jar lib/spring-boot-starter-web-1.3.5.RELEASE.jar lib/spring-bo
    10  ot-starter-tomcat-1.3.5.RELEASE.jar lib/tomcat-embed-core-8.0.33.jar 
    11  lib/tomcat-embed-el-8.0.33.jar lib/tomcat-embed-logging-juli-8.0.33.j
    12  ar lib/tomcat-embed-websocket-8.0.33.jar lib/spring-boot-starter-vali
    13  dation-1.3.5.RELEASE.jar lib/hibernate-validator-5.2.4.Final.jar lib/
    14  validation-api-1.1.0.Final.jar lib/jboss-logging-3.3.0.Final.jar lib/
    15  classmate-1.1.0.jar lib/jackson-databind-2.6.6.jar lib/jackson-annota
    16  tions-2.6.6.jar lib/jackson-core-2.6.6.jar lib/spring-web-4.2.6.RELEA
    17  SE.jar lib/spring-aop-4.2.6.RELEASE.jar lib/aopalliance-1.0.jar lib/s
    18  pring-beans-4.2.6.RELEASE.jar lib/spring-context-4.2.6.RELEASE.jar li
    19  b/spring-webmvc-4.2.6.RELEASE.jar lib/spring-expression-4.2.6.RELEASE
    20  .jar lib/spring-boot-starter-1.3.5.RELEASE.jar lib/spring-boot-1.3.5.
    21  RELEASE.jar lib/spring-boot-autoconfigure-1.3.5.RELEASE.jar lib/sprin
    22  g-boot-starter-logging-1.3.5.RELEASE.jar lib/logback-classic-1.1.7.ja
    23  r lib/logback-core-1.1.7.jar lib/slf4j-api-1.7.21.jar lib/jcl-over-sl
    24  f4j-1.7.21.jar lib/jul-to-slf4j-1.7.21.jar lib/log4j-over-slf4j-1.7.2
    25  1.jar lib/snakeyaml-1.16.jar lib/spring-boot-starter-jdbc-1.3.5.RELEA
    26  SE.jar lib/tomcat-jdbc-8.0.33.jar lib/tomcat-juli-8.0.33.jar lib/spri
    27  ng-jdbc-4.2.6.RELEASE.jar lib/spring-tx-4.2.6.RELEASE.jar lib/postgre
    28  sql-9.4.1208.jre7.jar lib/spring-boot-starter-actuator-1.3.5.RELEASE.
    29  jar lib/spring-boot-actuator-1.3.5.RELEASE.jar
    30 Start-Class: yg.boot.App
    31 Created-By: Apache Maven 3.0.4
    32 Spring-Boot-Version: 1.3.5.RELEASE
    33 Main-Class: org.springframework.boot.loader.JarLauncher
    34 Archiver-Version: Plexus Archiver
    

     

     Start-Class为Spring boot启动类,Main-Class为main方法入口。

                                          END

     

    本文由澳门新葡萄京最大平台发布于澳门新葡萄京,转载请注明出处:澳门新葡萄京:Spring boot入门篇

    关键词:

上一篇:安农大经济技术学院怎么样

下一篇:没有了