Spring Boot — это самый быстрый способ разработки весеннего приложения. Давайте посмотрим, как разработать такое приложение, которое использует базу данных MySQL для хранения пути текстовых файлов и файлов изображений, а затем использует Spring MVC в качестве архитектурного шаблона и веб-службы Spring RESTful для извлечения изображений и текста. Все это будет сделано с помощью Spring Boot.
Шаг 1: Изменения в Spring Boot
[1] В среде IDE, такой как STS, выберите NEW-> Project -> Spring Starter Project.
[2] Мы получим экран, как показано ниже (укажите названия пакетов проектов по желанию, нажмите «Далее»):
[3] Выберите «Зависимости проекта Spring» как MySQL, JPA и Web. Нажмите Готово:
[4] Мы получим структуру проекта, как показано ниже:
Здесь мы получили приложение Spring Boot, которое использует функции
1. JPA: чтобы мы могли отображать Java-сущности / классы с помощью таблиц MySQL.
2. MySQL: здесь мы используем базу данных MySQL.
3. Интернет: эта зависимость помогает нам получать спокойные конечные точки для получения изображений и текста в веб-браузере.
Шаг 2: Изменения в соответствии с архитектурой Spring MVC
Следующим шагом будет использование Spring MVC Architecture и разработка нашего уровня контроллера, Dao и уровня обслуживания.
[1] Контроллер: ApplicationController.java
@RestController
@RequestMapping(value = "/application")
public class ApplicationController {
@Autowired
private ApplicationService applicationService;
@RequestMapping(value = "/get-image", method = RequestMethod.GET)
public ResponseEntity<byte[]> getImagePath() throws IOException {
ResponseEntity<byte[]> responseEntity = applicationService.getImageURL();
return responseEntity;
}
@RequestMapping(value = "/get-text", method = RequestMethod.GET)
public ResponseEntity<byte[]> getTextPath() throws IOException {
ResponseEntity<byte[]> responseEntity = applicationService.getTextData();
return responseEntity;
}
}
[2] ApplicationDao.java:
public interface ApplicationDao extends CrudRepository<RequestData,Integer> {
@Query(value = "SELECT * FROM resource_table WHERE File_id=?1", nativeQuery = true)
RequestData findResource(Integer i);
}
[3] ApplicationService.java: (Примечание: я использую 1 в качестве аргумента для findResource, поскольку я буду создавать только одну запись в БД, эта логика может быть изменена в соответствии с требованием, например, findResourceByDate и т. Д.).
@Service
public class ApplicationService {
@Autowired
private ApplicationDao applicationDao;
public ResponseEntity<byte[]> getImageURL() throws IOException {
RequestData requestData = applicationDao.findResource(1);
String imagePath = requestData.getImages();
RandomAccessFile f = new RandomAccessFile(imagePath, "r");
byte[] b = new byte[(int) f.length()];
f.readFully(b);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
return new ResponseEntity<byte[]>(b, headers, HttpStatus.CREATED);
}
public ResponseEntity<byte[]> getTextData() throws IOException {
RequestData requestData = applicationDao.findResource(1);
String s = requestData.getContents();
RandomAccessFile f = new RandomAccessFile(s, "r");
byte[] b = new byte[(int) f.length()];
f.readFully(b);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
return new ResponseEntity<byte[]>(b, headers, HttpStatus.CREATED);
}
}
[4] Java-класс, который будет сопоставлен с MySQL Table (имя может быть изменено согласно требованию):
@Entity
@Table(name = "resource_table")
public class RequestData {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "File_id")
private String id;
@Column(name = "Images_path")
private String images;
@Column(name = "Text_path")
private String Contents;
// getter-setters
}
Наконец, полная структура проекта должна выглядеть так:
В файле application.properties внесите следующие изменения:
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql = true
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=15
Шаг 3: Изменения в MySQL
Я использую MySQL для демонстрации. БД может измениться согласно требованию. Ниже приведены пример схемы, таблицы и данные вставки:
У меня есть образец текстового файла (с некоторым текстом) и файл изображения (логотип Spring Boot) на локальном диске (E Drive).
Шаг 4: Рендеринг текста и изображений в браузере
[1] Запустите приложение весенней загрузки, как показано ниже:
В журналах вы увидите:
2018-07-16 01:29:15.513 INFO 12640 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-07-16 01:29:15.584 INFO 12640 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2018-07-16 01:29:15.594 INFO 12640 --- [ main] com.boot.BootAngularRestApplication : Started BootAngularRestApplication in 3.478 seconds (JVM running for 4.488)
Tomcat запущен на порту 8080.
[2] В веб-браузере, например Chrome, введите следующий URL:
[2.1] http: // localhost: 8080 / application / get-image
Вы получите следующий вывод:
[2.2] http: // localhost: 8080 / application / get-text:
Надеюсь, это поможет, спасибо!