SpringBoot2.0学习笔记之项目配置

一、SpringBoot简介:

   SpringBoot是由Pivotal团队提供的全新框架,设计目的是用来简化Spring应用的创建、运行、调试、部署等。

使用SpringBoot可以做到专注于Spring应用的开发,而无需过多关注XML配置。

SpringBoot使用COC(Convention Over Configuration)的理念,提供了针对企业应用开发各种场景的很多spring-boot-starter自动配置依赖模块,使得企业应用开发中各种场景的Spring应用更加快速和高效。

1、SpringBoot优点

   使编码变得简单:推荐使用注解

   使配置变得简单:自动配置、快速构建项目、快速集成新技术的能力。

   使部署变得简单:内嵌Tomcat、Jetty等web容器。

   使监控变得简单:自带项目监控。

2、SpringBoot2.0重要改变

   基于Spring5构建

   为各种组件的响应式编程提供了简化配置,如:Reactive Spring Data、Reactive Spring Security。

   要求Java版本必须是Java 8或更高版本。

   要求Gradle4或更高版本,Maven3.2或更高版本。

   要求Tomcat8或更高版本,Hibernate5.2或更高版本,Thymeleaf或更高版本。

3、常用依赖模块

   日志依赖模块spring-boot-starter-logging

   Web开发依赖模块spring-boot-starter-web

 

 

4、HelloWorldApplication 主类(创建项目自动生成的)

点主类启动SpringBootApp就可以运行,不需tomcat

主类代码如下

package com.guo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldApplication {

 public static void main(String[] args) {
  SpringApplication.run(HelloWorldApplication.class, args);
 }
}

 

二、项目配置

package com.guo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller  //新版本springboot,加了个RestController,下面的@ResponseBody 可以省略
public class HelloWorldController {
         @ResponseBody  //可以以ajax返回了
         @RequestMapping("/helloWorld") //地址...8080/helloWorld 运行
         public String say(){
                   return "Hello SpringBoot";
         }
}

 

Application.properties是整个的配置文件,相当于web.xml

server.port=8888  //把接口8080 改成8888
server.context-path=/HelloWorld   //不起作用,改成 server.servlet.context-path
server.servlet.context-path=/HelloWorld//输入 …8888/HelloWorld,出现下图说明成功

以后运行项目输入地址格式为http://localhost:8888/HelloWorld/加项目映射地址

 

 

 

然后在…8888/HelloWorld/@RequestMapping("/helloWorld")中的helloWorld可以返回say方法

输出 Hello SpringBoot

三、.以上是自动配置的,下面是自定义

在Application.properties继续添加下面代码

Hello1=spring boot \u4F60\u597D  //key=value的形式,不支持汉字用编码代替

 

这个Hello1怎么用,需要在HelloWorldController.java 加

@Value("${Hello1}")
         private String Hello1;

这样就被注入进来了, 将return值改为Hello1。

然后输入网址…8888/HelloWorld/(@RequestMapping("/helloWorld")中的)helloWorld ,出现Hello1对应的value值就正确了

四、模拟数据库连接怎么被调用,配置文件Application.properties中加入

mysql.jdbcName=com.mysql.jdbc.Driver
mysql.dbUrl=jdbc:mysql://localhost:3306/db_boot
mysql.userName=root
mysql.password=123

 

然后在Controller中注入@Value(${ })中的属性是配置文件中自定义的key

       

  @Value("${mysql.jdbcName}")
         private String jdbcName;
         @Value("${mysql.dbUrl}")
         private String dbUrl;
         @Value("${mysql.userName}")
         private String userName;
         @Value("${mysql.password}")
         private String password;
Controller中新加一个请求方法 showjdbc
@ResponseBody 
         @RequestMapping("/showJdbc") 
         public String showJdbc(){
                   return "mysql.jdbcName:"+jdbcName+"<br/>"
                                     +"mysql.dbUrl:"+dbUrl+"<br/>"
                                     +"mysql.userName:"+userName+"<br/>"
                                     +"mysql.password:"+password+"<br/>"
                   }

 

输入localhost:8888/HelloWorld/showJdbc

 

 

五、.链接数据库有四个属性,一个一个写注入@Value()...很麻烦

这时想到了用对象封装

新建package com.guo.properties;在包下新建个MysqlProperties.java

@Component //这配置这个类相当于Spring中的bean,所以谁引入要在前加个@Resource
@ConfigurationProperties(prefix="mysql") // ConfigurationProperties配置,prefix的值是key的前缀 
//(ConfigurationProperties会报个警告,点击添加,会自动在pom.xml添加如下jar包依赖 // <dependency> // <groupId>org.springframework.boot</groupId> // <artifactId>spring-boot-configuration-processor</artifactId> // <optional>true</optional> // </dependency> //) public class MysqlProperties { //前缀已经给配置了,所以代码写成如下这样就行了,然后在获取get set方法 private String jdbcName; private String dbUrl; private String userName; private String password; //get set 方法代码

 

 

 

 

 

六、.然后在Controller中把原先的代码

         @Value("${mysql.jdbcName}")

         private String jdbcName;

         @Value("${mysql.dbUrl}")

         private String dbUrl;

         @Value("${mysql.userName}")

         private String userName;

         @Value("${mysql.password}")

         private String password;

删除替换成

@Resource  //相当于注入个bean
private MysqlProperties mysqlProperties;
 

 

七、再然后showJdbc方法中的代码

return "mysql.jdbcName:"+jdbcName+"<br/>"

                                     +"mysql.dbUrl:"+dbUrl+"<br/>"

                                     +"mysql.userName:"+userName+"<br/>"

                                     +"mysql.password:"+password+"<br/>";

改为

       

  return "mysql.jdbcName:"+mysqlProperties.getJdbcName()+"<br/>"
                                     +"mysql.dbUrl:"+mysqlProperties.getDbUrl()+"<br/>"
                                     +"mysql.userName:"+mysqlProperties.getUserName()+"<br/>"
                                     +"mysql.password:"+mysqlProperties.getPassword()+"<br/>";

 

体现了面向对象的思想,这很方便,别的地方要用的话,写一个实体直接引用就行了。

然后在输 localhost:8888/HelloWorld/showJdbc 运行结果依然是一样的

 

八、出现如下错误

错误: 找不到或无法加载主类 com.guo.HelloWorldApplication

解决:

点击项目右键-->Properties-->Java Compiler-->Building-->Enable project specific settings-->Build path problems-->选中Abort   Incomplete build path/Circular dependencies  这两选项修改为Warning,然后保存即可。

 

 

 

参考书目:《Spring Boot 2企业应用实战》 作者:疯狂软件  出版社:电子工业出版社

 
posted @ 2018-04-03 00:30  锅锅7533  阅读(110)  评论(0编辑  收藏  举报