天天看點

Java學習筆記(持續更新)

 ​

1.建立項目

//帶main的是啟動入口

@SpringBootApplication //核心注解,主要用于開啟spring自動配置

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--   固定的值-->
<modelVersion>4.0.0</modelVersion>
<!--    目前工程的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--    目前工程JVA坐标-->
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--    可以有可以無-->
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--        架構起步依賴-->
<!--        web項目起步依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--測試起步依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<!--            打包編譯插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
      

2.內建springmvc

代碼需要放在Application類所在的同級目錄或者下級目錄

@Controller  //被Controller标記的類就是一個控制器,這個類中的方法,就是相應的動作。
public class IndexController {
//RequestMapping處理請求位址映射,用于類上,表示類中的所有響應請求的方法都是以該位址作為父路徑。
@RequestMapping(value = "/springboot/say")
//ResponseBody是作用在方法上的,将傳回的對象轉換為指定的格式之後,寫入到response對象的body區
public @ResponseBody String say(){
return "Hello springboot";
    }
}
      

3.application.properties

ctrl+alt+l快捷鍵

@RequestMapping(value = "/mapvalue")
public @ResponseBody
Map<String, Object> mapvalue() { //  Map<String, Object>以String為鍵,以Object為值。
Map<String, Object> map = new HashMap<String, Object>(); //建立Map對象,Object是所有類型的父類
map.put("message", "springboot"); //存儲key和value
return map;
    }
      

#核心配置檔案

#設定Tomcat端口号

server.port=8081

#設定位址的上下文根,需要在端口号後加上這個才可以,如果不需要直接用/即可

server.servlet.context-path=/springboot

4.application.yml或者application.yaml(這兩個其實格式是一樣的,隻是字尾不一樣)

application.yml可以展示層級關系,友善閱讀,且值前面自動會加上一個空格

public String say(String message){
return "say:Hello springboot "+message;
    }
//這種帶參數的寫法可以在位址欄輸入 ?+message=abc 就可以傳回相應的值
      

5.application.yaml和application.properties同時存在

優先級是使用application.properties的

删除鍵模式轉換,為啥覆寫了後面的字

光标變化成短線 ,删除鍵覆寫後面的字元。按下“删除鍵”+“insert”即可恢複。

6.多環境(開發,測試,生産)下核心配置檔案properties的使用

建立不同環境的配置檔案(application-dev.properties,application-test.properties,application-uat.properties,application-product.properties),比如測試環境application-test.properties裡的内容是

server.port=9090

server.servlet.context-path=/product

然後在主配置檔案裡application.properties指定使用的開發環境:

#激活使用的配置檔案

spring.profiles.active=dev

7.多環境(開發,測試,生産)下核心配置檔案yml的使用

和上面properties的配置一樣同理

8.擷取自定義的配置内容

在application.properties裡面websit=http://www.baidu.com

任何地方@Value(“${}”)從配置properties檔案中讀取相應的值可以使用。

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

public Object say(String message) {
return "網站:" + websit;
    }

      

9.把自定義配置映射到對象

但是當參數變多的時候,通過@value操作就顯得臃腫。springboot提供了更加簡單的操作:那就是通過 @ConfigurationProperties(prefix = “school”)一次性讀取并映射到javabean。

prefix字首,用于識别properties檔案裡需要映射的内容

代碼如下:

在application.properties裡:(注意這種方式必須有字首school.)

school.websit=http://www.baidu.com

school.name=highschool

在包config下的School類裡:

@Component//把這個類給spring容器進行管理。然後就可以再其他的類裡注入。 @controller 控制層 @service 服務層 @repository 資料通路層相當于配置檔案中的。泛指各種元件,就是說當我們的類不屬于各種歸類的時候。

@ConfigurationProperties(prefix = "school")
public class School {
private String name;
private String websit;
//Getter和Setter方法作用:提供對某個字段設定與通路的兩個入口。點選右鍵,選擇generate,然後選擇Getter and Setter
public String getName() {
return name;
    }

public void setName(String name) {
this.name = name;
    }

public String getWebsit() {
return websit;
    }

public void setWebsit(String websit) {
this.websit = websit;
    }
}

      

在控制層裡:

@Autowired
private School school;

@RequestMapping(value = "/say")
@ResponseBody
public Object say(String message) {
return "網站名字:" + school.getName()+",網站位址:" +school.getWebsit();
    }

      

出現了一個小問題;

Spring Boot Configuration Annotation Processor not configured

解決辦法:

https://blog.csdn.net/liangjiabao5555/article/details/104062932 加一個依賴就行了

注意:

如果在核心配置檔案裡有中文資訊,會出現亂碼,一般除了注釋不建議出現中文,如果有,可以先轉成ascll碼

在settings裡的editor裡的file encodings裡的properties files裡的 transparent native-to-ascii conversion勾選上即可。

而且如果是從其他地方拷貝的配置檔案,需要把每一行後面的空格給去掉,不然解析會有問題。

10.springboot內建jsp

在和resources的同級目錄下,建立webapp檔案夾,然後在idea右上角搜尋框的旁邊有個設定的按鈕,點選選擇project structure,

中間的地方找到該檔案夾,然後再web resource diretory的地方找到這個檔案夾點選應用即可增加藍點變成web資源檔案夾。

<!--    解析展示jsp頁面-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>