springboot启动器
引
言
这篇文章中,我们将介绍Spring Boot Starters,并将讨论Spring Boot Starters的优点和优势。
介绍
任何项目开始之前,无论是小项目还是企业级应用程序,其中一个关键方面是依赖关系管理,为小型应用程序手动管理并不困难,但是当涉及到复杂的应用程序时,手动管理所有项目依赖项是不理想,容易出现许多问题以及浪费时间(本来可用于项目的其他一些重要方面)。
Spring Boot背后的一个基本能力是解决类似的问题,Spring Boot Starters是一组方便的依赖描述符,可以很容易地包含在任何应用程序级别中。这些启动程序可以作为Spring相关技术的引导过程,我们不再需要担心依赖关系,它们将由Spring Boot Starters自动管理。
启动器包含许多依赖项,这些依赖项是使项目快速启动和运行所需的,并且具有一致的受支持的一组托管传递依赖项。
1
为什么需要Starters
当我们开始一个Spring Boot应用时,想到的一个基本问题是为什么需要Spring Boot Starters?或者这些启动器在应用中将如何帮助我?
如前所述,这些启动器可以引导应用程序,我们只需要在应用程序中包含正确的启动器,Spring Boot将确保所选启动器所需的所有依赖项都在类路径中。
为了更清楚地理解它,举一个例子,我们想要构建一个简单的Spring Web-MVC应用程序,我们需要在实际开始处理我Web应用程序代码之前考虑以下几点:
使用Spring Boot Starters,引入我们的Spring-MVC Web应用程序非常简单,只需要在我们的pom.xml中包含spring-boot-starter-web启动器:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
在pom.xml中的上面的条目将确保所有必需的依赖项应该在你的类路径中,并且我们都准备好开始着手Web应用程序。
目前,Spring Boot提供了大约50多个启动器,不包括第三方启动器。在接下来内容中,将介绍一些常用的启动器。
2
Web Starter
这是最常用的Spring Boot Starter之一,这个启动器将确保创建Spring Web应用程序(包括REST)所需的所有依赖项都包含在您的类路径中,它还将添加tomcat-starter作为默认服务器来运行我们的Web应用程序。 要在我们的应用程序中包含Web Starter,请在pom.xml中添加以下条目:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
接着我们就可以创建Spring-MVC控制器:
@RestController public class SampleController { @RequestMapping("/greeting") String hello() { return "HelloWorld!"; } }
如果运行应用程序并访问http://localhost:8080/greetings,你应该能够获得“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.h2database</groupId> <artifactId>h2</artifactId> </dependency>
Spring JPA Starter为H2,Derby和Hsqldb提供自动支持。我们可以看一下使用JPA starter创建示例JPA应用程序是多么容易:
@Entity @AllArgsConstructor @NoArgsConstructor @Setter @Getter @ToString public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String firstName; private String lastName; }
DB操作类UserRepository :
public interface UserRepository extends 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启动器,我们可以使用很多开箱即用的功能,而无需繁琐的配置或编码。如果需要,你可以随时修改或自定义这些配置。
4
Mail Starter
从应用程序发送电子邮件是非常常见的事情,现在基本每个应用程序都需要从系统发送电子邮件,Spring Boot Mail启动程序屏蔽了所有复杂性并提供了一种简单的方法来处理此功能。
我们只需在应用程序中添加邮件启动器即可启用电子邮件支持:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
使用gmail作为我的SMTP服务器,这里是添加到我的application.properties文件的SMTP详细信息:
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=bz120413@gmail.com spring.mail.password=password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
EmailService类负责发送电子邮件:
@Component public class JavaEmailService { @Autowired private JavaMailSender mailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); mailSender.send(message); } }
我们使用Spring提供的JavaMailSender来发送电子邮件。接下来使用JUnit测试代码:
@RunWith(SpringRunner.class) @SpringBootTest public class EmailTest { @Autowired JavaEmailService javaEmailService; @Test public void sendEmail(){ javaEmailService.sendEmail("dongfeng.zdf@alibaba-inc.com","test","test send email"); } }
同样,发送一个简单的电子邮件需要最少的代码和配置,Spring Boot Mail Starter确保所有必需的工具已经到位,以便快速开始处理真正的问题。
需要注意的是,我们在JavaEmailService中使用了JavaMailSender,该bean是由Spring Boot自动创建的。
5
Test Starter
我们通常使用Junit,Mockito或Spring Test来测试应用程序。可以通过添加Spring Boot Test启动器很方便地将所有这些库包含在我们的应用程序中:
<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("dongfeng.zdf@alibaba-inc.com","test","test send email"); } }
除了这些启动器,下面是其他常用的Spring Boot Starters:
如前边所述,请参阅Spring Boot Starter(https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter)以获取Spring Boot提供的最新启动列表。
总结
本文提供了Spring Boot Starters简介,我们讨论了为什么需要这些启动器以及它们如何帮助我们快速启动应用程序,同时也探究了一些最常用的Spring Boot Starter 使用方式。
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!