第一个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