依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
请注意,我们对这些数据库已经有了开箱即用的自动支持:H2、Derby 和 Hsqldb。在我们的示例中,我们将使用 H2。
现在让我们为实体创建仓储(repository):
public interface GenericEntityRepository extends JpaRepository<GenericEntity, Long> {}
现在是测试代码的时候了。这是 JUnit 测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class SpringBootJPATest {
@Autowired
private GenericEntityRepository genericEntityRepository;
@Test
public void givenGenericEntityRepository_whenSaveAndRetreiveEntity_thenOK() {
GenericEntity genericEntity =
genericEntityRepository.save(new GenericEntity("test"));
GenericEntity foundedEntity =
genericEntityRepository.findOne(genericEntity.getId());
assertNotNull(foundedEntity);
assertEquals(genericEntity.getValue(), foundedEntity.getValue());
}
}
我们没有花时间指定数据库厂商、URL 连接和凭据。没有额外所需的配置,这些都受益于 Boot 的默认支持。 但是,如果您需要,可以进行详细配置。
5、Mail Starter
企业开发中一个非常常见的任务就是发送电子邮件,直接使用 Java Mail API 来处理通常很困难。
Spring Boot starter 屏蔽了这些复杂性 — mail 依赖可以通过以下方式指定:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
现在我们可以直接使用 JavaMailSender。让我们开始编写一些测试。
为了测试,我们需要一个简单的 SMTP 服务器。在此例中,我们将使用 Wiser。将其包含到我们的 POM 中:
<dependency>
<groupId>org.subethamail</groupId>
<artifactId>subethasmtp</artifactId>
<version>3.1.7</version>
<scope>test</scope>
</dependency>
最新版本的 Wiser 可以在 Maven 中央仓库(http://search.maven.org/#search%7Cga%7C1%7Csubethasmtp)中找到。
以下是测试源码:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class SpringBootMailTest {
@Autowired
private JavaMailSender javaMailSender;
private Wiser wiser;
private String userTo = "user2@localhost";
private String userFrom = "user1@localhost";
private String subject = "Test subject";
private String textMail = "Text subject mail";
@Before
public void setUp() throws Exception {
final int TEST_PORT = 25;
wiser = new Wiser(TEST_PORT);
wiser.start();
}
@After
public void tearDown() throws Exception {
wiser.stop();
}
@Test
public void givenMail_whenSendAndReceived_thenCorrect() throws Exception {
SimpleMailMessage message = composeEmailMessage();
javaMailSender.send(message);
List<WiserMessage> messages = wiser.getMessages();
assertThat(messages, hasSize(1));
WiserMessage wiserMessage = messages.get(0);
assertEquals(userFrom, wiserMessage.getEnvelopeSender());
assertEquals(userTo, wiserMessage.getEnvelopeReceiver());
assertEquals(subject, getSubject(wiserMessage));
assertEquals(textMail, getMessage(wiserMessage));
}
private String getMessage(WiserMessage wiserMessage)
throws MessagingException, IOException {
return wiserMessage.getMimeMessage().getCon