zoukankan      html  css  js  c++  java
  • 第一个Spring Boot Web程序

    需要的环境和工具:

    1、Eclipse
    2、Java环境(JDK 1.7或以上版本)
    3、Maven 3.0+(Eclipse已经内置了)

    写个Hello Spring:

    1、新建一个Maven项目,项目名称为 SpringTest

     选择 maven-archetype-quickstart 

    删除项目中的 test,这个我们用不到, 刚刚建好的项目如图所示:

    修改 pom.xml ,如果你是第一次玩Spring那么修改pom.xml后Eclipse会自动下载相关依赖包:

     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>test.com</groupId>
     6   <artifactId>SpringTest</artifactId>
     7   <version>0.0.1-SNAPSHOT</version>
     8   <packaging>jar</packaging>
     9 
    10   <name>SpringTest</name>
    11   <url>http://maven.apache.org</url>
    12 
    13   <properties>
    14     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15     <java.version>1.8</java.version>
    16   </properties>
    17   
    18   <parent>
    19     <groupId>org.springframework.boot</groupId>
    20     <artifactId>spring-boot-starter-parent</artifactId>
    21     <version>1.2.5.RELEASE</version>
    22     <relativePath/>
    23   </parent>
    24 
    25   <dependencies>
    26     <dependency>
    27       <groupId>org.springframework.boot</groupId>
    28       <artifactId>spring-boot-starter-web</artifactId>
    29     </dependency>
    30   </dependencies>
    31 
    32   <build>
    33     <plugins>
    34       <plugin>
    35         <groupId>org.springframework.boot</groupId>
    36         <artifactId>spring-boot-maven-plugin</artifactId>
    37       </plugin>
    38     </plugins>
    39   </build>
    40   
    41 </project>

    再修改 test.com.SpringTest 里面的 App.java

     1 package test.com.SpringTest;
     2 import org.springframework.boot.SpringApplication;
     3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
     4 import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
     5 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
     6 import org.springframework.context.annotation.Bean;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 import org.springframework.web.bind.annotation.RestController;
     9 
    10 @RestController
    11 @EnableAutoConfiguration
    12 public class App 
    13 {
    14     @RequestMapping("/m")
    15     public String springtest() {
    16         return "Hello spring!";
    17     }
    18     
    19     @RequestMapping("/")
    20     public String index() {
    21         return "Hello World!";
    22     }
    23     
    24     public static void main( String[] args )
    25     {
    26         System.out.println( "App start!" );
    27         SpringApplication.run(App.class, args);
    28     }
    29 
    30 }

    两个文件修改好了直接Run As - Java Application

    控制台看到下面这样的内容就说明运行成功了! 

    打开浏览器,访问 http://localhost:8080  或者访问 http://localhost:8080/m 就能看到成果了!是不是很简单的。

        

    学习总结

    1、修改XML文件是为了增加springframework的依赖包

    2、Spring应用上下文:  

      我们在App的main入口调用了 SpringApplication.run(App.class, args);  SpringApplication是Spring Boot框架中描述Spring应用的类,它的run()方法会创建一个Spring应用上下文(Application Context)。

    3、路由的设置:

      @RequestMapping注解表明该方法处理那些URL对应的HTTP请求,也就是我们常说的URL路由。在这个例子中我们定义了两个路由 “/” 和 “/m”

      http://localhost:8080/     被路由至 index()方法进行处理

      http://localhost:8080/m  被路由至springtest()方法进行处理

      如果我们需要将访问的地址修改成:http://localhost:8080/Api/    http://localhost:8080/Api/m 来访问这两个方法,可以在class App上面加一个RequestMapping注释:

      

      

    4、端口的修改

      如果要修改默认的8080端口可以在项目根目录新建一个 application.properties 文件,文件内容为:

    server.port=8081  

      重新Run一下,端口就修改成了8081,

      配置文件的详情可以看下面的附录:

      1 # ===================================================================
      2 # COMMON SPRING BOOT PROPERTIES
      3 #
      4 # This sample file is provided as a guideline. Do NOT copy it in its
      5 # entirety to your own application.               ^^^
      6 # ===================================================================
      7 
      8 # ----------------------------------------
      9 # CORE PROPERTIES
     10 # ----------------------------------------
     11 
     12 # SPRING CONFIG (ConfigFileApplicationListener)
     13 spring.config.name= # config file name (default to 'application')
     14 spring.config.location= # location of config file
     15 
     16 # PROFILES
     17 spring.profiles= # comma list of active profiles
     18 
     19 # APPLICATION SETTINGS (SpringApplication)
     20 spring.main.sources=
     21 spring.main.web-environment= # detect by default
     22 spring.main.show-banner=true
     23 spring.main....= # see class for all properties
     24 
     25 # LOGGING
     26 logging.path=/var/logs
     27 logging.file=myapp.log
     28 logging.config=
     29 
     30 # IDENTITY (ContextIdApplicationContextInitializer)
     31 spring.application.name=
     32 spring.application.index=
     33 
     34 # EMBEDDED SERVER CONFIGURATION (ServerProperties)
     35 server.port=8080
     36 server.address= # bind to a specific NIC
     37 server.session-timeout= # session timeout in seconds
     38 server.context-path= # the context path, defaults to '/'
     39 server.servlet-path= # the servlet path, defaults to '/'
     40 server.tomcat.access-log-pattern= # log pattern of the access log
     41 server.tomcat.access-log-enabled=false # is access logging enabled
     42 server.tomcat.protocol-header=x-forwarded-proto # ssl forward headers
     43 server.tomcat.remote-ip-header=x-forwarded-for
     44 server.tomcat.basedir=/tmp # base dir (usually not needed, defaults to tmp)
     45 server.tomcat.background-processor-delay=30; # in seconds
     46 server.tomcat.max-threads = 0 # number of threads in protocol handler
     47 server.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding
     48 
     49 # SPRING MVC (HttpMapperProperties)
     50 http.mappers.json-pretty-print=false # pretty print JSON
     51 http.mappers.json-sort-keys=false # sort keys
     52 spring.mvc.locale= # set fixed locale, e.g. en_UK
     53 spring.mvc.date-format= # set fixed date format, e.g. dd/MM/yyyy
     54 spring.mvc.message-codes-resolver-format= # PREFIX_ERROR_CODE / POSTFIX_ERROR_CODE
     55 spring.view.prefix= # MVC view prefix
     56 spring.view.suffix= # ... and suffix
     57 spring.resources.cache-period= # cache timeouts in headers sent to browser
     58 spring.resources.add-mappings=true # if default mappings should be added
     59 
     60 # THYMELEAF (ThymeleafAutoConfiguration)
     61 spring.thymeleaf.prefix=classpath:/templates/
     62 spring.thymeleaf.suffix=.html
     63 spring.thymeleaf.mode=HTML5
     64 spring.thymeleaf.encoding=UTF-8
     65 spring.thymeleaf.content-type=text/html # ;charset=<encoding> is added
     66 spring.thymeleaf.cache=true # set to false for hot refresh
     67 
     68 # FREEMARKER (FreeMarkerAutoConfiguration)
     69 spring.freemarker.allowRequestOverride=false
     70 spring.freemarker.allowSessionOverride=false
     71 spring.freemarker.cache=true
     72 spring.freemarker.checkTemplateLocation=true
     73 spring.freemarker.contentType=text/html
     74 spring.freemarker.exposeRequestAttributes=false
     75 spring.freemarker.exposeSessionAttributes=false
     76 spring.freemarker.exposeSpringMacroHelpers=false
     77 spring.freemarker.prefix=
     78 spring.freemarker.requestContextAttribute=
     79 spring.freemarker.settings.*=
     80 spring.freemarker.suffix=.ftl
     81 spring.freemarker.templateEncoding=UTF-8
     82 spring.freemarker.templateLoaderPath=classpath:/templates/
     83 spring.freemarker.viewNames= # whitelist of view names that can be resolved
     84 
     85 # GROOVY TEMPLATES (GroovyTemplateAutoConfiguration)
     86 spring.groovy.template.allowRequestOverride=false
     87 spring.groovy.template.allowSessionOverride=false
     88 spring.groovy.template.cache=true
     89 spring.groovy.template.configuration.*= # See Groovy's TemplateConfiguration
     90 spring.groovy.template.contentType=text/html
     91 spring.groovy.template.prefix=classpath:/templates/
     92 spring.groovy.template.suffix=.tpl
     93 spring.groovy.template.templateEncoding=UTF-8
     94 spring.groovy.template.viewNames= # whitelist of view names that can be resolved
     95 
     96 # VELOCITY TEMPLATES (VelocityAutoConfiguration)
     97 spring.velocity.allowRequestOverride=false
     98 spring.velocity.allowSessionOverride=false
     99 spring.velocity.cache=true
    100 spring.velocity.checkTemplateLocation=true
    101 spring.velocity.contentType=text/html
    102 spring.velocity.dateToolAttribute=
    103 spring.velocity.exposeRequestAttributes=false
    104 spring.velocity.exposeSessionAttributes=false
    105 spring.velocity.exposeSpringMacroHelpers=false
    106 spring.velocity.numberToolAttribute=
    107 spring.velocity.prefix=
    108 spring.velocity.properties.*=
    109 spring.velocity.requestContextAttribute=
    110 spring.velocity.resourceLoaderPath=classpath:/templates/
    111 spring.velocity.suffix=.vm
    112 spring.velocity.templateEncoding=UTF-8
    113 spring.velocity.viewNames= # whitelist of view names that can be resolved
    114 
    115 # INTERNATIONALIZATION (MessageSourceAutoConfiguration)
    116 spring.messages.basename=messages
    117 spring.messages.cacheSeconds=-1
    118 spring.messages.encoding=UTF-8
    119 
    120 
    121 # SECURITY (SecurityProperties)
    122 security.user.name=user # login username
    123 security.user.password= # login password
    124 security.user.role=USER # role assigned to the user
    125 security.require-ssl=false # advanced settings ...
    126 security.enable-csrf=false
    127 security.basic.enabled=true
    128 security.basic.realm=Spring
    129 security.basic.path= # /**
    130 security.headers.xss=false
    131 security.headers.cache=false
    132 security.headers.frame=false
    133 security.headers.contentType=false
    134 security.headers.hsts=all # none / domain / all
    135 security.sessions=stateless # always / never / if_required / stateless
    136 security.ignored=false
    137 
    138 # DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
    139 spring.datasource.name= # name of the data source
    140 spring.datasource.initialize=true # populate using data.sql
    141 spring.datasource.schema= # a schema (DDL) script resource reference
    142 spring.datasource.data= # a data (DML) script resource reference
    143 spring.datasource.platform= # the platform to use in the schema resource (schema-${platform}.sql)
    144 spring.datasource.continueOnError=false # continue even if can't be initialized
    145 spring.datasource.separator=; # statement separator in SQL initialization scripts
    146 spring.datasource.driverClassName= # JDBC Settings...
    147 spring.datasource.url=
    148 spring.datasource.username=
    149 spring.datasource.password=
    150 spring.datasource.max-active=100 # Advanced configuration...
    151 spring.datasource.max-idle=8
    152 spring.datasource.min-idle=8
    153 spring.datasource.initial-size=10
    154 spring.datasource.validation-query=
    155 spring.datasource.test-on-borrow=false
    156 spring.datasource.test-on-return=false
    157 spring.datasource.test-while-idle=
    158 spring.datasource.time-between-eviction-runs-millis=
    159 spring.datasource.min-evictable-idle-time-millis=
    160 spring.datasource.max-wait-millis=
    161 
    162 # MONGODB (MongoProperties)
    163 spring.data.mongodb.host= # the db host
    164 spring.data.mongodb.port=27017 # the connection port (defaults to 27107)
    165 spring.data.mongodb.uri=mongodb://localhost/test # connection URL
    166 spring.data.mongo.repositories.enabled=true # if spring data repository support is enabled
    167 
    168 # JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
    169 spring.jpa.properties.*= # properties to set on the JPA connection
    170 spring.jpa.openInView=true
    171 spring.jpa.show-sql=true
    172 spring.jpa.database-platform=
    173 spring.jpa.database=
    174 spring.jpa.generate-ddl=false # ignored by Hibernate, might be useful for other vendors
    175 spring.jpa.hibernate.naming-strategy= # naming classname
    176 spring.jpa.hibernate.ddl-auto= # defaults to create-drop for embedded dbs
    177 spring.data.jpa.repositories.enabled=true # if spring data repository support is enabled
    178 
    179 # SOLR (SolrProperties})
    180 spring.data.solr.host=http://127.0.0.1:8983/solr
    181 spring.data.solr.zkHost=
    182 spring.data.solr.repositories.enabled=true # if spring data repository support is enabled
    183 
    184 # ELASTICSEARCH (ElasticsearchProperties})
    185 spring.data.elasticsearch.cluster-name= # The cluster name (defaults to elasticsearch)
    186 spring.data.elasticsearch.cluster-nodes= # The address(es) of the server node (comma-separated; if not specified starts a client node)
    187 spring.data.elasticsearch.local=true # if local mode should be used with client nodes
    188 spring.data.elasticsearch.repositories.enabled=true # if spring data repository support is enabled
    189 
    190 
    191 
    192 # FLYWAY (FlywayProperties)
    193 flyway.locations=classpath:db/migrations # locations of migrations scripts
    194 flyway.schemas= # schemas to update
    195 flyway.initVersion= 1 # version to start migration
    196 flyway.prefix=V
    197 flyway.suffix=.sql
    198 flyway.enabled=true
    199 flyway.url= # JDBC url if you want Flyway to create its own DataSource
    200 flyway.user= # JDBC username if you want Flyway to create its own DataSource
    201 flyway.password= # JDBC password if you want Flyway to create its own DataSource
    202 
    203 # LIQUIBASE (LiquibaseProperties)
    204 liquibase.change-log=classpath:/db/changelog/db.changelog-master.yaml
    205 liquibase.contexts= # runtime contexts to use
    206 liquibase.default-schema= # default database schema to use
    207 liquibase.drop-first=false
    208 liquibase.enabled=true
    209 
    210 # JMX
    211 spring.jmx.enabled=true # Expose MBeans from Spring
    212 
    213 # RABBIT (RabbitProperties)
    214 spring.rabbitmq.host= # connection host
    215 spring.rabbitmq.port= # connection port
    216 spring.rabbitmq.addresses= # connection addresses (e.g. myhost:9999,otherhost:1111)
    217 spring.rabbitmq.username= # login user
    218 spring.rabbitmq.password= # login password
    219 spring.rabbitmq.virtualhost=
    220 spring.rabbitmq.dynamic=
    221 
    222 # REDIS (RedisProperties)
    223 spring.redis.host=localhost # server host
    224 spring.redis.password= # server password
    225 spring.redis.port=6379 # connection port
    226 spring.redis.pool.max-idle=8 # pool settings ...
    227 spring.redis.pool.min-idle=0
    228 spring.redis.pool.max-active=8
    229 spring.redis.pool.max-wait=-1
    230 
    231 # ACTIVEMQ (ActiveMQProperties)
    232 spring.activemq.broker-url=tcp://localhost:61616 # connection URL
    233 spring.activemq.user=
    234 spring.activemq.password=
    235 spring.activemq.in-memory=true # broker kind to create if no broker-url is specified
    236 spring.activemq.pooled=false
    237 
    238 # HornetQ (HornetQProperties)
    239 spring.hornetq.mode= # connection mode (native, embedded)
    240 spring.hornetq.host=localhost # hornetQ host (native mode)
    241 spring.hornetq.port=5445 # hornetQ port (native mode)
    242 spring.hornetq.embedded.enabled=true # if the embedded server is enabled (needs hornetq-jms-server.jar)
    243 spring.hornetq.embedded.serverId= # auto-generated id of the embedded server (integer)
    244 spring.hornetq.embedded.persistent=false # message persistence
    245 spring.hornetq.embedded.data-directory= # location of data content (when persistence is enabled)
    246 spring.hornetq.embedded.queues= # comma separate queues to create on startup
    247 spring.hornetq.embedded.topics= # comma separate topics to create on startup
    248 spring.hornetq.embedded.cluster-password= # customer password (randomly generated by default)
    249 
    250 # JMS (JmsProperties)
    251 spring.jms.pub-sub-domain= # false for queue (default), true for topic
    252 
    253 # SPRING BATCH (BatchDatabaseInitializer)
    254 spring.batch.job.names=job1,job2
    255 spring.batch.job.enabled=true
    256 spring.batch.initializer.enabled=true
    257 spring.batch.schema= # batch schema to load
    258 
    259 # AOP
    260 spring.aop.auto=
    261 spring.aop.proxy-target-class=
    262 
    263 # FILE ENCODING (FileEncodingApplicationListener)
    264 spring.mandatory-file-encoding=false
    265 
    266 # SPRING SOCIAL (SocialWebAutoConfiguration)
    267 spring.social.auto-connection-views=true # Set to true for default connection views or false if you provide your own
    268 
    269 # SPRING SOCIAL FACEBOOK (FacebookAutoConfiguration)
    270 spring.social.facebook.app-id= # your application's Facebook App ID
    271 spring.social.facebook.app-secret= # your application's Facebook App Secret
    272 
    273 # SPRING SOCIAL LINKEDIN (LinkedInAutoConfiguration)
    274 spring.social.linkedin.app-id= # your application's LinkedIn App ID
    275 spring.social.linkedin.app-secret= # your application's LinkedIn App Secret
    276 
    277 # SPRING SOCIAL TWITTER (TwitterAutoConfiguration)
    278 spring.social.twitter.app-id= # your application's Twitter App ID
    279 spring.social.twitter.app-secret= # your application's Twitter App Secret
    280 
    281 # SPRING MOBILE SITE PREFERENCE (SitePreferenceAutoConfiguration)
    282 spring.mobile.sitepreference.enabled=true # enabled by default
    283 
    284 # SPRING MOBILE DEVICE VIEWS (DeviceDelegatingViewResolverAutoConfiguration)
    285 spring.mobile.devicedelegatingviewresolver.enabled=true # disabled by default
    286 spring.mobile.devicedelegatingviewresolver.normalPrefix=
    287 spring.mobile.devicedelegatingviewresolver.normalSuffix=
    288 spring.mobile.devicedelegatingviewresolver.mobilePrefix=mobile/
    289 spring.mobile.devicedelegatingviewresolver.mobileSuffix=
    290 spring.mobile.devicedelegatingviewresolver.tabletPrefix=tablet/
    291 spring.mobile.devicedelegatingviewresolver.tabletSuffix=
    292 
    293 # ----------------------------------------
    294 # ACTUATOR PROPERTIES
    295 # ----------------------------------------
    296 
    297 # MANAGEMENT HTTP SERVER (ManagementServerProperties)
    298 management.port= # defaults to 'server.port'
    299 management.address= # bind to a specific NIC
    300 management.contextPath= # default to '/'
    301 
    302 # ENDPOINTS (AbstractEndpoint subclasses)
    303 endpoints.autoconfig.id=autoconfig
    304 endpoints.autoconfig.sensitive=true
    305 endpoints.autoconfig.enabled=true
    306 endpoints.beans.id=beans
    307 endpoints.beans.sensitive=true
    308 endpoints.beans.enabled=true
    309 endpoints.configprops.id=configprops
    310 endpoints.configprops.sensitive=true
    311 endpoints.configprops.enabled=true
    312 endpoints.configprops.keys-to-sanitize=password,secret
    313 endpoints.dump.id=dump
    314 endpoints.dump.sensitive=true
    315 endpoints.dump.enabled=true
    316 endpoints.env.id=env
    317 endpoints.env.sensitive=true
    318 endpoints.env.enabled=true
    319 endpoints.health.id=health
    320 endpoints.health.sensitive=false
    321 endpoints.health.enabled=true
    322 endpoints.info.id=info
    323 endpoints.info.sensitive=false
    324 endpoints.info.enabled=true
    325 endpoints.metrics.id=metrics
    326 endpoints.metrics.sensitive=true
    327 endpoints.metrics.enabled=true
    328 endpoints.shutdown.id=shutdown
    329 endpoints.shutdown.sensitive=true
    330 endpoints.shutdown.enabled=false
    331 endpoints.trace.id=trace
    332 endpoints.trace.sensitive=true
    333 endpoints.trace.enabled=true
    334 
    335 # MVC ONLY ENDPOINTS
    336 endpoints.jolokia.path=jolokia
    337 endpoints.jolokia.sensitive=true
    338 endpoints.jolokia.enabled=true # when using Jolokia
    339 endpoints.error.path=/error
    340 
    341 # JMX ENDPOINT (EndpointMBeanExportProperties)
    342 endpoints.jmx.enabled=true
    343 endpoints.jmx.domain= # the JMX domain, defaults to 'org.springboot'
    344 endpoints.jmx.unique-names=false
    345 endpoints.jmx.enabled=true
    346 endpoints.jmx.staticNames=
    347 
    348 # JOLOKIA (JolokiaProperties)
    349 jolokia.config.*= # See Jolokia manual
    350 
    351 # REMOTE SHELL
    352 shell.auth=simple # jaas, key, simple, spring
    353 shell.command-refresh-interval=-1
    354 shell.command-path-pattern= # classpath*:/commands/**, classpath*:/crash/commands/**
    355 shell.config-path-patterns= # classpath*:/crash/*
    356 shell.disabled-plugins=false # don't expose plugins
    357 shell.ssh.enabled= # ssh settings ...
    358 shell.ssh.keyPath=
    359 shell.ssh.port=
    360 shell.telnet.enabled= # telnet settings ...
    361 shell.telnet.port=
    362 shell.auth.jaas.domain= # authentication settings ...
    363 shell.auth.key.path=
    364 shell.auth.simple.user.name=
    365 shell.auth.simple.user.password=
    366 shell.auth.spring.roles=
    367 
    368 # GIT INFO
    369 spring.git.properties= # resource ref to generated git info properties file
    View Code

      

      

  • 相关阅读:
    Linux常用基本命令:三剑客命令之-awk数组用法
    Linux常用基本命令:三剑客命令之-awk动作用法(1)
    Linux常用基本命令:三剑客命令之-awk模式用法(2)
    Linux常用基本命令:三剑客命令之-awk模式用法(1)
    Linux常用基本命令:三剑客命令之-awk格式化动作
    Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量
    Linux常用基本命令:三剑客命令之-awk输入输出分隔符
    Linux常用基本命令:三剑客命令之-awk基础用法
    Linux环境变量详解与应用
    在js中怎么判断两个字符串相等
  • 原文地址:https://www.cnblogs.com/relax/p/5849043.html
Copyright © 2011-2022 走看看