中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot Starters簡介及其優劣勢

發布時間:2020-08-19 20:00:15 來源:腳本之家 閱讀:180 作者:mrr 欄目:編程語言

簡介

在啟動任何項目(無論是小型項目還是企業級應用程序)之前,其中關鍵的方面之一是依賴管理,手動為小型應用程序執行依賴管理并不是一項困難的工作,但對于復雜的應用程序,手動管理所有項目依賴并不理想,容易出現許多問題以及浪費時間,而這些時間可以用于項目的其他一些重要方面。

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

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

1. 為什么我們需要Starters?

當我們用Spring Boot開始開發應用時,我們想到的一個基本問題就是為什么我們需要Spring Boot Starters? 或者這些Starters在我的應用中如何幫助到我?

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

為了更清楚地理解它,我們舉一個例子,我們想構建一個簡單的Spring Web MVC應用程序,我們需要在開始編寫我們的Web應用程序代碼之前考慮以下幾點。

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

使用Spring Boot Starters來引導我們的Spring MVC Web應用程序非常簡單,我們需要在我們的pom.xml中包含spring-boot-starter-web 這個starter:

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

以上pom.xml中的條目將確保所有必需的依賴項都應位于classpath中,因此我們都準備好開始開發web應用程序了。

目前,Spring Boot提供的Starters約有50多個,這還不包括第三方的Starters。有關Starters的更新列表,請參閱Spring Boot Starter

接下來,我將介紹一些常用的Starters。

2. Web Starter

這是最常用的Spring Boot Starter之一,該Starter將確保創建Spring Web應用程序(包括REST)所需的所有依賴包括在你的calsspath中,它還將添加tomcat-starter作為默認服務器來運行我們的Web應用程序。 要在我們的應用程序中包含Web Starter,請在pom.xml中添加以下條目。

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

現在我們可以創建我們的Spring MVC Controller

 @RestController
 public class SampleController{

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

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

3. Data JPA Starter

大多數應用程序需要一些持久性機制,而JPA是持久性的標準,Spring Boot Starters帶有JPA Starters,你不再需要手動配置這些JPA依賴,而是可以通過在應用程序中添加JPA Starter輕松實現。

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

Spring JPA Starter提供對H2,Derby和Hsqldb的自動支持。讓我們看看使用JPA starter創建一個JPA樣例應用程序是多么容易。

@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);
}

接下來我們可以測試我們的代碼了,如下是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());
  }
}

正如我們在上面的代碼中看到的那樣,你不再需要指定那些數據庫配置或額外的數據庫配置,通過添加JPA starter,我們無需配置或編碼即可獲得許多開箱即用的功能。

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

4. Mail Starter

從應用程序發送電子郵件是非常常見的任務,現在每個應用程序都需要從系統發送電子郵件。Spring Boot Mail starter提供了一種隱藏所有復雜性的簡單方法來處理此功能。

我們可以通過在應用程序中添加Mail starter來啟用電子郵件支持。

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

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

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類負責發送郵件:

@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來發送電子郵件。 JUnit測試代碼如下:

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

同樣,只需簡單的代碼和配置即可發送一封簡單的電子郵件,Spring Boot Mail Starter確保所有必需的工具已經到位,以快速開始解決實際問題。

請注意,我們在JavaEmailService bean中使用JavaMailSender - 該bean是由Spring Boot自動創建的。

5. Test Starter

我們通常使用Junit、Mockito或Spring Test來測試我們的應用程序。我們可以通過添加Spring Boot Test starter輕松地將所有這些庫包含在我們的應用程序中。

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

Spring Boot會自動找到我們正確的版本用于我們的應用程序測試。 這是一個JUnit示例測試:

@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

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

總結

本文提供了一個Spring Boot Starters簡介,我們討論了為什么我們需要這些Starter以及他們如何幫助我們快速引導我們的應用程序。 我們探索了一些最常用的Spring Boot Starter。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 石阡县| 游戏| 屯门区| 肥城市| 佛冈县| 井研县| 汉川市| 宁远县| 横峰县| 喀喇| 丰顺县| 泰兴市| 六枝特区| 公安县| 聂拉木县| 乌兰浩特市| 景泰县| 深州市| 县级市| 平和县| 舞钢市| 津市市| 会宁县| 平陆县| 五常市| 闸北区| 龙口市| 惠来县| 漠河县| 凉城县| 金昌市| 施甸县| 南乐县| 河北省| 满城县| 临桂县| 新昌县| 紫阳县| 田林县| 静乐县|