最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot Starters簡(jiǎn)介及其優(yōu)劣勢(shì)

 更新時(shí)間:2018年05月25日 09:36:54   投稿:mrr  
在這篇文章中,我們將向你介紹Spring Boot Starters,并將討論Spring Boot Starters的優(yōu)點(diǎn)和優(yōu)勢(shì),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧

簡(jiǎn)介

在啟動(dòng)任何項(xiàng)目(無(wú)論是小型項(xiàng)目還是企業(yè)級(jí)應(yīng)用程序)之前,其中關(guān)鍵的方面之一是依賴管理,手動(dòng)為小型應(yīng)用程序執(zhí)行依賴管理并不是一項(xiàng)困難的工作,但對(duì)于復(fù)雜的應(yīng)用程序,手動(dòng)管理所有項(xiàng)目依賴并不理想,容易出現(xiàn)許多問(wèn)題以及浪費(fèi)時(shí)間,而這些時(shí)間可以用于項(xiàng)目的其他一些重要方面。

Spring Boot背后的基本原理之一就是解決類似的問(wèn)題。Spring Boot Starter是一套方便的依賴描述符,可以很容易地包含在任何級(jí)別的應(yīng)用程序中。這些Starters作為Spring相關(guān)技術(shù)的引導(dǎo)過(guò)程,我們 不再需要擔(dān)心依賴關(guān)系,它們將由Spring Boot Starters自動(dòng)管理。

Starters包含了許多你需要的依賴項(xiàng),以使項(xiàng)目快速啟動(dòng)和運(yùn)行,并且具有一致的、被支持的一組管理傳遞依賴項(xiàng)。

1. 為什么我們需要Starters?

當(dāng)我們用Spring Boot開(kāi)始開(kāi)發(fā)應(yīng)用時(shí),我們想到的一個(gè)基本問(wèn)題就是為什么我們需要Spring Boot Starters? 或者這些Starters在我的應(yīng)用中如何幫助到我?

如前所述,這些Starters用于引導(dǎo)應(yīng)用程序,我們需要的只是在應(yīng)用程序中包括正確的Starters,而Spring Boot將確保所選Starters所需的所有依賴項(xiàng)都在你的classpath中。

為了更清楚地理解它,我們舉一個(gè)例子,我們想構(gòu)建一個(gè)簡(jiǎn)單的Spring Web MVC應(yīng)用程序,我們需要在開(kāi)始編寫(xiě)我們的Web應(yīng)用程序代碼之前考慮以下幾點(diǎn)。

  • 正確的Spring MVC依賴
  • Web技術(shù)所需的依賴(例如,我們想要使用Thymeleaf)
  • 我們需要確保所有這些依賴是兼容的

使用Spring Boot Starters來(lái)引導(dǎo)我們的Spring MVC Web應(yīng)用程序非常簡(jiǎn)單,我們需要在我們的pom.xml中包含spring-boot-starter-web 這個(gè)starter:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

以上pom.xml中的條目將確保所有必需的依賴項(xiàng)都應(yīng)位于classpath中,因此我們都準(zhǔn)備好開(kāi)始開(kāi)發(fā)web應(yīng)用程序了。

目前,Spring Boot提供的Starters約有50多個(gè),這還不包括第三方的Starters。有關(guān)Starters的更新列表,請(qǐng)參閱Spring Boot Starter

接下來(lái),我將介紹一些常用的Starters。

2. Web Starter

這是最常用的Spring Boot Starter之一,該Starter將確保創(chuàng)建Spring Web應(yīng)用程序(包括REST)所需的所有依賴包括在你的calsspath中,它還將添加tomcat-starter作為默認(rèn)服務(wù)器來(lái)運(yùn)行我們的Web應(yīng)用程序。 要在我們的應(yīng)用程序中包含Web Starter,請(qǐng)?jiān)趐om.xml中添加以下條目。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

現(xiàn)在我們可以創(chuàng)建我們的Spring MVC Controller

 @RestController
 public class SampleController{

  @RequestMapping("/greeting")
  Stringhello(){
    return "HelloWorld!";
  }
}

如果你運(yùn)行應(yīng)用程序并訪問(wèn) http://localhost:8080/greeting,你應(yīng)該能夠獲得"Hello Word”作為響應(yīng)。我們使用最少的代碼創(chuàng)建了一個(gè)REST控制器。

3. Data JPA Starter

大多數(shù)應(yīng)用程序需要一些持久性機(jī)制,而JPA是持久性的標(biāo)準(zhǔn),Spring Boot Starters帶有JPA Starters,你不再需要手動(dòng)配置這些JPA依賴,而是可以通過(guò)在應(yīng)用程序中添加JPA Starter輕松實(shí)現(xiàn)。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
</dependency>

Spring JPA Starter提供對(duì)H2,Derby和Hsqldb的自動(dòng)支持。讓我們看看使用JPA starter創(chuàng)建一個(gè)JPA樣例應(yīng)用程序是多么容易。

@Entity
public class User{
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String firstName;
  private String lastName;
  protected User(){
  }
  public User(String firstName, String lastName){
    //this.id = id;
    this.firstName = firstName;
    this.lastName = lastName;
  }
  public Long getId(){
    return id;
  }
  public void setId(Long id){
    this.id = id;
  }
  public String getFirstName(){
    return firstName;
  }
  public void setFirstName(String firstName){
    this.firstName = firstName;
  }
  public String getLastName(){
    return lastName;
  }
  public void setLastName(String lastName){
    this.lastName = lastName;
  }
  @Override
  public String toString(){
    return "User{" +
        "id=" + id +
        ", firstName='" + firstName + '\'' +
        ", lastName='" + lastName + '\'' +
        '}';
  }
}

如下是我們的UserRepository:

public interface UserRepositoryextends CrudRepository<User,Long>{
  List<User>findUserByLastName(String lastName);
}

接下來(lái)我們可以測(cè)試我們的代碼了,如下是JUnit代碼:

@RunWith(SpringRunner.class)
@SpringBootTest
public class JpademoApplicationTests{
  @Autowired
  UserRepository userRepository;
  @Test
  public void contextLoads(){
    User user = userRepository.save(new User("Demo","User"));
    User searchUser= userRepository.findOne(user.getId());
    assertNotNull(searchUser);
    assertEquals(user.getFirstName(),searchUser.getFirstName());
  }
}

正如我們?cè)谏厦娴拇a中看到的那樣,你不再需要指定那些數(shù)據(jù)庫(kù)配置或額外的數(shù)據(jù)庫(kù)配置,通過(guò)添加JPA starter,我們無(wú)需配置或編碼即可獲得許多開(kāi)箱即用的功能。

如果需要,你始終可以修改或自定義這些配置。

4. Mail Starter

從應(yīng)用程序發(fā)送電子郵件是非常常見(jiàn)的任務(wù),現(xiàn)在每個(gè)應(yīng)用程序都需要從系統(tǒng)發(fā)送電子郵件。Spring Boot Mail starter提供了一種隱藏所有復(fù)雜性的簡(jiǎn)單方法來(lái)處理此功能。

我們可以通過(guò)在應(yīng)用程序中添加Mail starter來(lái)啟用電子郵件支持。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

我正在使用Mailgun作為我的SMTP服務(wù)器,以下是添加到我的application. properties文件中的SMTP詳細(xì)信息:

spring.mail.host=smtp.mailgun.org
spring.mail.username=postmaster@domain.com
spring.mail.password=mypassword
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.port=587
spring.mail.properties.mail.smtp.auth=true

我們的EmailService類負(fù)責(zé)發(fā)送郵件:

@Component
public class JavaEmailService{
  private JavaMailSender mailSender;
  public JavaEmailService(JavaMailSender mailSender){
    this.mailSender = mailSender;
  }
  public void sendEmail(){
    MimeMessagePreparator messagePreparator = mimeMessage -> {
      MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
      helper.setFrom("noreply@javadevjournal.com");
      helper.setTo("xxx@gmail.com");
      helper.setSubject("Sample mail subject");
      helper.setText("Test Email");
    };
    mailSender.send(messagePreparator);
  }
}

我們使用Spring提供的JavaMailSender來(lái)發(fā)送電子郵件。 JUnit測(cè)試代碼如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmailTest{
  @Autowired
  JavaEmailService javaEmailService;
  @Test
  public void sendEmail(){
    javaEmailService.sendEmail();
  }
}

同樣,只需簡(jiǎn)單的代碼和配置即可發(fā)送一封簡(jiǎn)單的電子郵件,Spring Boot Mail Starter確保所有必需的工具已經(jīng)到位,以快速開(kāi)始解決實(shí)際問(wèn)題。

請(qǐng)注意,我們?cè)贘avaEmailService bean中使用JavaMailSender - 該bean是由Spring Boot自動(dòng)創(chuàng)建的。

5. Test Starter

我們通常使用Junit、Mockito或Spring Test來(lái)測(cè)試我們的應(yīng)用程序。我們可以通過(guò)添加Spring Boot Test starter輕松地將所有這些庫(kù)包含在我們的應(yīng)用程序中。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>

Spring Boot會(huì)自動(dòng)找到我們正確的版本用于我們的應(yīng)用程序測(cè)試。 這是一個(gè)JUnit示例測(cè)試:

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmailTest{
  @Autowired
  JavaEmailService javaEmailService;
  @Test
  public void sendEmail(){
    javaEmailService.sendEmail();
  }
}

除了這些starter之外,下面還有其他常用的Spring Boot Starter

spring-boot-starter-security
spring-boot-starter-web-services
spring-boot-starter-integration
spring-boot-starter-validation
spring-boot-starter-actuator

如前所述,請(qǐng)參閱 Spring Boot Starter 獲取Spring Boot提供的Starter的最新列表。

總結(jié)

本文提供了一個(gè)Spring Boot Starters簡(jiǎn)介,我們討論了為什么我們需要這些Starter以及他們?nèi)绾螏椭覀兛焖僖龑?dǎo)我們的應(yīng)用程序。 我們探索了一些最常用的Spring Boot Starter。

相關(guān)文章

  • 學(xué)會(huì)在Java中使用Optional功能

    學(xué)會(huì)在Java中使用Optional功能

    這篇文章主要介紹了學(xué)會(huì)在Java中使用Optional功能,在本文中,我們將了解如何、何時(shí)以及在哪里最好地應(yīng)用Optional,具體相關(guān)內(nèi)容需要的朋友可以參考下面文章內(nèi)容
    2022-09-09
  • Spring?Boot?配置?Hikari?數(shù)據(jù)庫(kù)連接池的操作代碼

    Spring?Boot?配置?Hikari?數(shù)據(jù)庫(kù)連接池的操作代碼

    數(shù)據(jù)庫(kù)連接池是一個(gè)提高程序與數(shù)據(jù)庫(kù)的連接的優(yōu)化,連接池它主要作用是提高性能、節(jié)省資源、控制連接數(shù)、連接管理等操作,這篇文章主要介紹了SpringBoot配置Hikari數(shù)據(jù)庫(kù)連接池,需要的朋友可以參考下
    2023-09-09
  • 解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問(wèn)題

    解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問(wèn)題

    這篇文章主要介紹了解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java實(shí)例精煉掌握語(yǔ)法

    Java實(shí)例精煉掌握語(yǔ)法

    本章節(jié)我們將為大家介紹?Java?實(shí)現(xiàn)幾大基礎(chǔ)問(wèn)題,通過(guò)實(shí)例學(xué)習(xí)我們可以更快的掌握?Java?的應(yīng)用,感興趣的朋友來(lái)看看吧
    2022-04-04
  • java 代碼塊與靜態(tài)代碼塊加載順序

    java 代碼塊與靜態(tài)代碼塊加載順序

    這篇文章主要介紹了java 代碼塊與靜態(tài)代碼塊加載順序的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況詳析

    JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況詳析

    當(dāng)產(chǎn)生異常后,并在異常處理器中進(jìn)行執(zhí)行之后,程序會(huì)是如何的一種狀態(tài),是終止還是繼續(xù)執(zhí)行處理之后的代碼呢,下面這篇文章主要給大家介紹了關(guān)于JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • springboot 設(shè)置CorsFilter跨域不生效的解決

    springboot 設(shè)置CorsFilter跨域不生效的解決

    這篇文章主要介紹了springboot 設(shè)置CorsFilter跨域不生效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Maven環(huán)境安裝配置和新建項(xiàng)目介紹

    Maven環(huán)境安裝配置和新建項(xiàng)目介紹

    這篇文章介紹了Maven環(huán)境安裝配置和新建項(xiàng)目介紹,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Mybatis 中的insertOrUpdate操作

    Mybatis 中的insertOrUpdate操作

    這篇文章主要介紹了Mybatis 中的insertOrUpdate操作,代碼簡(jiǎn)單易懂,非常不錯(cuò)需要的的朋友參考下
    2016-12-12
  • Java8 Collectors.toMap的坑

    Java8 Collectors.toMap的坑

    這篇文章主要介紹了Java8 Collectors.toMap的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

达州市| 鲜城| 黑山县| 会理县| 七台河市| 灯塔市| 明溪县| 沂源县| 榕江县| 海伦市| 泸水县| 丹凤县| 陈巴尔虎旗| 南昌县| 大埔县| 时尚| 南投市| 邯郸县| 泽州县| 苗栗市| 自贡市| 信阳市| 凌海市| 镇坪县| 来宾市| 新安县| 五寨县| 湘潭市| 江西省| 精河县| 津市市| 石家庄市| 瑞丽市| 赤壁市| 汉沽区| 惠水县| 靖宇县| 田东县| 陵川县| 济宁市| 宁安市|