SpringBoot系列之入門篇(一)

前言

前面咱們學習了Java基礎和算法,接下來咱們經過學習SpringBoot基礎來強化代碼書寫能力,只有經過基礎項目實踐才能發現問題,在此過程當中咱們則能夠進一步學習JVM虛擬機和線程知識,豈不一箭雙鵰,好了,話很少講,咱們開始。java

SpringBoot入門

在還未接觸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();
    }
}

@Configuration和@ComponentScan註解

在SpringBoot 1.x時經過XML來代替註解進行配置,可是隨着項目擴大,經過XML配置所帶來的的問題顯而易見,隨着JDK 1.5發佈開始支持註解,因此在SpringBoot也經過註解替代了繁瑣的XML配置,咱們經過使用註解@Configuration意在代表這至關於一個XML文件,那麼註解@ComponentScan又是什麼意思呢?由於在Spring應用程序啓動時,須要掃描包中全部類使其成爲Bean(下面會講),可是咱們須要告訴到底在哪裏搜索這些類呢?這個時候就須要使用註解@ComponentScan。在Spring中,咱們經過@ComponentScan結合註解@Configuration來指定須要查找的包,若沒有指定參數,則默認查找當前包以及當前包下全部子包,參數basePackages有別名value且爲數組便可同時指定多個包。因此上述可去除參數,直接用註解@ComponentScan便可,同時該註解也支持過濾類型,這個咱們留到後續再進行詳細講解。springboot

@Bean註解

在Spring應用程序中,由Spring IoC容器管理的對象稱爲bean,也就是說Bean是由Spring IoC容器進行實例化,組裝和以其餘方式管理的對象,說白了就是進行依賴注入而不是直接實例化。app

@Service和@Autowired註解

接下來咱們定義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中幾個基礎註解,仍是蠻簡單的,好了本節內容到此爲止,感謝您的閱讀,咱們下節見。

相關文章
相關標籤/搜索