前面咱們學習了Java基礎和算法,接下來咱們經過學習SpringBoot基礎來強化代碼書寫能力,只有經過基礎項目實踐才能發現問題,在此過程當中咱們則能夠進一步學習JVM虛擬機和線程知識,豈不一箭雙鵰,好了,話很少講,咱們開始。java
在還未接觸SpringBoot時,自我感受是一個全新的框架,可能須要花費不少時間去學習,但當我瞭解完基礎原理後,發現並非全新學習,一切經過註解來進行配置從而實現IOC,相對.NET Core而言不過是在表達方式上使用不一樣罷了,能夠理解爲換湯不換藥。Spring Boot由Pivotal Team開發基於Java的開源框架,可用於建立微服務,它爲Java開發者提供了一個很好的平臺,用於開發能夠獨立運行的生產級Spring應用程序,經過最低配置,而無需整個Spring配置設置。SpringBoot設計目標:【避免複雜的XML配置】、【減小開發時間並獨立運行應用程序】、【靈活配置Java Bean、XML配置和數據庫事務】、【強大批處理功能並管理REST端點】、【簡化依賴管理】、【提供嵌入式Servlet容器】、【全部內容自動配置而無需手動配置】。SpringBoot的工做原理:經過使用@EnableAutoConfiguration註解,根據添加到項目中的依賴項自動配置應用程序。例如,若是MySQL數據庫位於類路徑上,但還沒有配置任何數據庫鏈接,則Spring Boot會自動配置內存數據庫。Spring Boot應用程序的入口點是包含@SpringBootApplication和main方法的類,Spring Boot使用@ComponentScan註解自動掃描項目中包含的全部組件。經過idea初始化SpringBoot後,以下:web
咱們知道在.NET Core中已定義控制器、而路由則能夠靈活定義,在SpringBoot中一切都經過註解進行,接下來咱們來啓動SpringBoot應用程序並打印出hello world,以下:算法
package com.demo.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @SpringBootApplication @Controller public class SpringbootApplication { @RequestMapping @ResponseBody public String sayHello(){ return "hello world"; } public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } }
上述咱們只是簡單打印了hello world,後續結合數據庫進行增刪改查時再來詳細講解上述註解,咱們首先熟悉其餘基礎註解概念,咱們經過以下一個例子來講明:模擬數據庫查詢獲取用戶列表,首先咱們定義用戶類,以下:spring
package com.demo.springboot; public class User { public int age; public String name; public User(int age, String name) { this.age = age; this.name = name; } }
接下來咱們模擬數據庫,以下獲取用戶列表:數據庫
package com.demo.springboot; import java.util.ArrayList; import java.util.List; public class UserDAL { public List<User> getUsers() { List<User> users = new ArrayList<>(); for (int i = 18; i < 30; i++) { users.add(new User(i, "jeffcky" + Integer.toString(i))); } return users; } }
咱們定義一個配置類來獲取上述UserDAL,以下:數組
package com.demo.springboot; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan(basePackages = "com.demo.springboot") public class SpringConfig { @Bean public UserDAL getUserDAL() { return new UserDAL(); } }
在SpringBoot 1.x時經過XML來代替註解進行配置,可是隨着項目擴大,經過XML配置所帶來的的問題顯而易見,隨着JDK 1.5發佈開始支持註解,因此在SpringBoot也經過註解替代了繁瑣的XML配置,咱們經過使用註解@Configuration意在代表這至關於一個XML文件,那麼註解@ComponentScan又是什麼意思呢?由於在Spring應用程序啓動時,須要掃描包中全部類使其成爲Bean(下面會講),可是咱們須要告訴到底在哪裏搜索這些類呢?這個時候就須要使用註解@ComponentScan。在Spring中,咱們經過@ComponentScan結合註解@Configuration來指定須要查找的包,若沒有指定參數,則默認查找當前包以及當前包下全部子包,參數basePackages有別名value且爲數組便可同時指定多個包。因此上述可去除參數,直接用註解@ComponentScan便可,同時該註解也支持過濾類型,這個咱們留到後續再進行詳細講解。springboot
在Spring應用程序中,由Spring IoC容器管理的對象稱爲bean,也就是說Bean是由Spring IoC容器進行實例化,組裝和以其餘方式管理的對象,說白了就是進行依賴注入而不是直接實例化。app
接下來咱們定義Service並獲取用戶列表,以下:框架
package com.demo.springboot; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { @Autowired public UserDAL userDAL; public List<User> getUsers(){ return userDAL.getUsers(); } }
@Service註解使用類路徑掃描自動檢測和配置Bean,@Autowired註解用來獲取註冊在Spring IOC容器中的bean對象。最後咱們獲取容器中的Service並獲取用戶列表,以下:ide
package com.demo.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import java.util.List; @SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(SpringbootApplication.class, args); UserService userService = context.getBean(UserService.class); List<User> users = userService.getUsers(); for (User user : users) { System.out.println("年齡:" + user.age + " 姓名:" + user.name); } } }
本節咱們學習了SpringBoot中幾個基礎註解,仍是蠻簡單的,好了本節內容到此爲止,感謝您的閱讀,咱們下節見。