spring boot基礎

1.ANT下面典型的項目層次結構。
(1) src存放文件。
(2) class存放編譯後的文件。
(3) lib存放第三方JAR包。
(4) dist存放打包,發佈之後的代碼。java


2.Source Folder在eclipse中就是放入class文件的路徑,你們都熟悉的src就是Source Folder。
當咱們發佈程序時,src下面的.Java文件都編譯成了.class文件放入WEB-INF\classes文件夾下。
3.你也能夠建一個Source Folder,名字隨便起,但記得它裏面的內容最終發佈時在被放在了WEB-INF\classes文件夾下。web

4.這不是我想說的,我想說的是路徑問題。
好比你建一個名爲cong的Source Folder,裏面放了一些配置文件,當別的配置文件引用conf裏面的東西時,
路徑是WEB-INF\classes.就是說,conf裏面東西的路徑就是src的路徑!
你能夠查看一下,發佈完程序後,conf裏面的東西和src裏面的東西放在一塊了,並且沒有conf這個文件夾!spring

5.因此咱們能夠認爲:新建Source Folder,其實沒有新建Source Folder,在視覺上咱們感受多了一個文件夾,
這樣好管理咱們的東西,但最後它裏面的東西和src下的東西放一塊了。咱們就認爲全部的Source Folder就是一個src。
因此路徑的問題按照src路徑處理就行。(你徹底能夠無視你新建的Source Folder).sql

6.它們的區別以下:
package:當你在創建一個package時,它自動創建到source folder下,也只能創建在這個目錄之下. 數據庫

source folder:存放Java源代碼的文件夾,固然也包括一些package文件夾,還能夠包含其餘文件.
項目構建後,source folder裏面的java自動編譯成class文件到相應的/web-inf/classes文件夾中,其餘文件也會移到/web-inf/classes相應的目錄下. 編程


7. 一個Web Project引用多個Java Project在Eclipse下的配置.
項目結構:
項目由一個Web Project和多個Java Project構成,Web Project須要引用其它Java Project的類和Jar包。開發時用Eclipse3.5和Tomcat調試時,出現找不到引用的Java Project
相關類和Jar包。通過一番摸索,終於調通了。如下是具體調試方法。安全

8.1.配置Web Project的Java Build Path中的Projects服務器

找到Web Project的Java Build Path的Projects視圖,點擊右側的Add按鈕,選擇要添加的Java Project。選擇的結果示例以下:session


9.Eclipse Java Build Path詳解
:
1.設置"source folder"與"output folder".mybatis

* source folder:存放.java源文件的根目錄;
* output folder:.class編譯輸出的根目錄;
* 純「java project」中,通常把"src"設置爲source folder,把bin設置爲output folder;
* 在「web project」中,通常把"src"設置爲source folder,把WEB-INF/classes設置爲output

2.4.Order and Export有兩個屬性。打勾與不打勾的區別在於導出jar包時是否將這個庫的內容也打包到jar中,勾爲包含,不勾爲不含。


5.mybatis模糊查詢時,like關鍵字,要用${},不能用#{},由於like要用,%的。%China%
由於#{}在數據庫裏執行的時候會被替換成「」包括,select * from table like name like %${value}%


6.mybatis操控數據庫是用sqlsessionFactory的,


7.Spring Boot須要jdk1.8以上版本
8. 項目產生的構件類型,例如jar、war、ear、pom。
9.使用maven打包工程時,maven能夠打包工程。maven用來打包項目。
10.<exclusion> 排除依賴,解除對某個包的依賴 解決引入多個子項目時,不一樣子項目依賴不一樣版本的包,以哪一個爲準。
11.<bulid>這部分是在對項目進行構建時所須要的配置,當你對項目進行編譯,測試,打包,發佈的時候,這部分配置就會在對應的階段起做用了。build標籤中能夠包含不少插
件,這些插件能夠配置到項目的某些構建階段,隨着項目的構建進程發揮做用
如何肯定有哪些插件呢?

<surefire> 運行單元測試和生成測試報告
<compiler> 編譯源代碼和測試代碼
可參考開發的總pom,有 <compiler> 和 <eclipse> 的插件
12.<dependencies>加入依賴。groupId, artifactId,version爲必備


14.構建工具。 用來構建項目,只須要簡單的執行命令就能夠。 對於我的開發有時候咱們從開發到測試到最後打包可能都是一我的作,而且用一個開發工具就解決這些了,由於
大多數開發工具IDE是自帶打包功能的。 可是在實際的公司工做中,開發人員與測試人員、部署人員是分開的,部署人員是不會向開發人員要源代碼,他們也不會打包,那麼怎
麼部署呢? 開發人員開發後,確認沒問題,將源代碼放到版本控制服務器中,而且寫一個腳本,這個腳本運行就能夠自動打包,而後部署人員運行這個文件打包後部署。 那麼
這個腳本里面須要關係到目錄與加載的文件等,這時候若是每一個項目用的文件都不一樣,目錄名字千奇百怪,那麼就不容易統一管理,因而構建工具出現了,它規定你的目錄必須
要如何定製,這樣方便統一管理。 Ant是比較好的構建工具,可是腳本目錄要由本身寫,命令中存在依賴關係,編譯,打包。 編譯目錄還要本身指定,maven除了指定好目錄,
幫你打包,同時maven有一箇中央庫,這個可就厲害了,通常咱們作項目引用一些第三方工具包,兩個項目都要用,咱們爲了方便,會拷貝兩份工具包到項目中,無形之中磁盤佔
用過大,maven中央庫幫你下載須要的工具包,而且只須要在pom.xml引用便可,打包時自帶進去,而不用平時跟着項目跑。 ant一般腳本名爲build.xml,maven的胃pom.xml 。


15.咱們每一個人,也許都在用不一樣的方法來抗拒現實。玩手機就是其中一種方法,還有喝酒,吸毒,甚至足球等等。所謂的不上進,也不是由於沒有正常人的慾望,只不過是在用
這些手段逃避現實。適當的調節身心還好,可一但過於沉迷,就會失去自我。無論何時,都要勇敢面對生活,敢於承擔責任。

做者:趙趕鵝
連接:
https://www.zhihu.com/question/55791476/answer/147051313
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。


20.以前咱們建立基於Spring的項目須要考慮添加哪些Spring依賴和第三方的依賴。使用Spring Boot後,咱們能夠以最小化的依賴開始spring應用。大多數Spring Boot應用須要
不多的配置便可運行,好比咱們能夠建立獨立獨立大Java應用,而後經過java -jar運行啓動或者傳統的WAR部署。其也提供了命令行工具來直接運行Spring腳本(如groovy腳本
)。也就是說Spring Boot讓Spring應用從配置到運行變的更加簡單,但不對Spring自己提供加強(即額外的功能)。


21.現象

在eclipse裏用subeclipe從svn上拖下來的項目,看不見java build path怎麼辦?


緣由

那是由於你的兩個配置文件:.project .classpath沒有內容或者缺失。

22.spring boot maven配置:
spring-boot-starter-parent
spring-boot-starter-web
spring-boot-maven-plugin
該插件支持多種功能,經常使用的有兩種,第一種是打包項目爲可執行的jar包。
在咱們開發過程當中,咱們須要常常修改,爲了不重複啓動項目,咱們能夠啓用熱部署。

Spring-Loaded項目提供了強大的熱部署功能,添加/刪除/修改 方法/字段/接口/枚舉 等代碼的時候均可以熱部署,速度很快,很方便。
想在Spring Boot中使用該功能很是簡單,就是在spring-boot-maven-plugin插件下面添加依賴:

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>

添加之後,經過mvn spring-boot:run啓動就支持熱部署了。
注意:使用熱部署的時候,須要IDE編譯類後才能生效,你能夠打開自動編譯功能,這樣在你保存修改的時候,類就自動從新加載了。
注意
Spring Boot建議將咱們main方法所在的這個主要的配置類配置在根包名下。
@RestController

由於咱們例子是寫一個web應用,所以寫的這個註解,這個註解至關於同時添加@Controller和@ResponseBody註解。
在Application.java中有main方法。

由於默認和包有關的註解,默認包名都是當前類所在的包,例如@ComponentScan, @EntityScan, @SpringBootApplication註解。
@EnableAutoConfiguration

Spring Boot建議只有一個帶有該註解的類。
@EnableAutoConfiguration做用:Spring Boot會自動根據你jar包的依賴來自動配置項目。例如當你項目下面有HSQLDB的依賴時,Spring Boot會建立默認的內存數據庫的數據源
DataSource,若是你本身建立了DataSource,Spring Boot就不會建立默認的DataSource。

若是你不想讓Spring Boot自動建立,你能夠配置註解的exclude屬性,例如:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

@SpringBootApplication

因爲大量項目都會在主要的配置類上添加@Configuration,@EnableAutoConfiguration,@ComponentScan三個註解。

所以Spring Boot提供了@SpringBootApplication註解,該註解能夠替代上面三個註解(使用Spring註解繼承實現)。

20.啓動項目SpringApplication.run

啓動Spring Boot項目最簡單的方法就是執行下面的方法:

SpringApplication.run(Application.class, args);

21.運行

在IDE中直接直接執行main方法,而後訪問http://localhost:8080便可。

22.另外還能夠用上面提到的mvn,能夠打包爲可執行jar包,而後執行java -jar xxx.jar。
23.Spring Boot 支持多種外部配置方式

這些方式優先級以下:

命令行參數
來自java:comp/env的JNDI屬性
Java系統屬性(System.getProperties())
操做系統環境變量
RandomValuePropertySource配置的random.*屬性值
jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
jar包內部的application.properties或application.yml(不帶spring.profile)配置文件
@Configuration註解類上的@PropertySource
經過SpringApplication.setDefaultProperties指定的默認屬性

24.命令行參數

經過Java -jar app.jar --name="Spring" --server.port=9090方式來傳遞參數。

參數用--xxx=xxx的形式傳遞。

可使用的參數能夠是咱們本身定義的,也能夠是Spring Boot中默認的參數。

不少人可能會關心如web端口如何配置這樣的問題,這些都是Spring Boot中提供的參數,部分可用參數以下:
注意:命令行參數在app.jar的後面!

25.應用配置文件(.properties或.yml)

在配置文件中直接寫:

name=Isea533
server.port=8080
.yml格式的配置文件如:

name: Isea533
server:
port: 8080

當有前綴的狀況下,使用.yml格式的配置文件更簡單。


27.23.6 Using YAML instead of Properties

YAML is a superset of JSON, and as such is a very convenient format for specifying hierarchical configuration data. The SpringApplication class will
automatically support YAML as an alternative to properties whenever you have the SnakeYAML library on your classpath.

28.23.6.1 Loading YAML

Spring Framework provides two convenient classes that can be used to load YAML documents. The YamlPropertiesFactoryBean will load YAML as Properties and
the YamlMapFactoryBean will load YAML as a Map.

27.To bind to properties like that using the Spring DataBinder utilities (which is what @ConfigurationProperties does) you need to have a property in the
target bean of type java.util.List (or Set) and you either need to provide a setter, or initialize it with a mutable value, e.g. this will bind to the
properties above

28.@ConfigurationProperties(prefix="my")
public class Config {

private List<String> servers = new ArrayList<String>();

public List<String> getServers() {
return this.servers;
}
}

29.23.6.2 Exposing YAML as properties in the Spring Environment

The YamlPropertySourceLoader class can be used to expose YAML as a PropertySource in the Spring Environment. This allows you to use the familiar @Value
annotation with placeholders syntax to access YAML properties.

30.注意:使用.yml時,屬性名的值和冒號中間必須有空格,如name: Isea533正確,name:Isea533就是錯的。
31.spring會從classpath下的/config目錄或者classpath的根目錄查找application.properties或application.yml。

/config優先於classpath根目錄

32.Spring Boot 會自動將prefix="my"前綴爲my的屬性注入進來。

Spring Boot 會自動轉換類型,當使用List的時候須要注意在配置中對List進行初始化!
33.Spring Boot 會自動將prefix="my"前綴爲my的屬性注入進來。

Spring Boot 會自動轉換類型,當使用List的時候須要注意在配置中對List進行初始化!

34.Spring Boot 會將foo開頭的屬性按照名字匹配注入到FooComponent對象中。
35.Spring Boot 會將foo開頭的屬性按照名字匹配注入到FooComponent對象中。

36.Druid的簡介

Druid首先是一個數據庫鏈接池。Druid是目前最好的數據庫鏈接池,在功能、性能、擴展性方面,都超過其餘數據庫鏈接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss
DataSource。Druid已經在阿里巴巴部署了超過600個應用,通過一年多生產環境大規模部署的嚴苛考驗。

37.Druid的功能

一、替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫鏈接池。

二、能夠監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,可以詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。

三、數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是很差的行爲,容易致使安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。

四、SQL執行日誌,Druid提供了不一樣的LogFilter,可以支持Common-Logging、Log4j和JdkLog,你能夠按須要選擇相應的LogFilter,監控你應用的數據庫訪問狀況。

五、擴展JDBC,若是你要對JDBC層有編程的需求,能夠經過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。


6.構建系統--maven或者gradle,最強大的地方在依賴管理dependency management。
When you upgrade Spring Boot itself, these dependencies will be upgraded as well in a consistent way.

7.13.2 Maven
Maven users can inherit from the spring-boot-starter-parent project to obtain sensible defaults. The parent project provides the following features:

Java 1.8 as the default compiler level.
UTF-8 source encoding.
A Dependency Management section, allowing you to omit <version> tags for common dependencies, inherited from the spring-boot-dependencies POM.
Sensible resource filtering.
Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).
Sensible resource filtering for application.properties and application.yml including profile-specific files (e.g. application-foo.properties and
application-foo.yml)

30.13.2.3 Using the Spring Boot Maven plugin

Spring Boot includes a Maven plugin that can package the project as an executable jar. Add the plugin to your <plugins> section if you want to use it:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
[Note]
If you use the Spring Boot starter parent pom, you only need to add the plugin, there is no need for to configure it unless you want to change the settings
defined in the parent.

30.13.5 Starters
Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related
technology that you need, without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get
started using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go.

31.14.1 Using the 「default」 package
When a class doesn’t include a package declaration it is considered to be in the 「default package」. The use of the 「default package」 is generally
discouraged, and should be avoided. It can cause particular problems for Spring Boot applications that use @ComponentScan, @EntityScan or
@SpringBootApplication annotations, since every class from every jar, will be read.

32.We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is
often placed on your main class

33. @EnableAutoConfiguration註解

第二個類級別的註解是 @EnableAutoConfiguration 。這個註解告訴Spring Boot根據添加的jar依賴猜想你想如何配置Spring。因爲 spring-boot-starter-web 添加了Tomcat和
Spring MVC,因此auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。


34.spring中爲了減小xml中配置,能夠生命一個配置類(例如SpringConfig)來對bean進行配置。
not spring mvc 而是spring,是spring提供的configure註解,不是spring mvc
<context:component-scan base-package="SpringStudy.Model">
</context:component-scan>

35.2、定義一個配置類

用@Configuration註解該類,等價 與XML中配置beans;用@Bean標註方法等價於XML中配置bean。

代碼以下:

36.@Configuration註解的類至關於一個xml配置文件,是至關於文件,是文件。不是注入,也不是生成,就是至關於一個xml文件。

相關文章
相關標籤/搜索