Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 3102 сообщений
Cообщения с меткой

spring - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Как быстро подключить google proto3 к вашему spring (boot) web проекту

Среда, 29 Июня 2016 г. 16:06 (ссылка)

Краткое описание как подключить Google Protocol Buffers / Proto3 к вашему Spring проекту





Spring Boot: позволяет быстро разрабатывать stand-alone веб приложения которые вы можете «просто» запустить с минимумом настроек.

Google proto3: легкий, гибкий, автоматический механизм сериализации данных.



Эта статья объяснит как быстро соединить эти технологии вместе. Ознакомиться с технологиями вы можете самостоятельно пройдя по ссылкам в материалах.







Для того чтобы создать новый spring-boot проект вы можете воспользоваться Spring Initializr веб сайтом.

Я выбрал Web как dependency, проект генерировал для maven.



Настройка модуля моделей




В модуле моделей будут находится только файлы с расширением *.proto и автоматически сгенерированные java классы



Proto* файлы помещаются в src/main/proto

Для примера я создал health.proto



package demo.domain;

option java_package = "demo.domain";
option java_outer_classname = "HealthCheckProtos";

message HealthCheck {

required string response = 1;
required string timestamp = 2;
required string version = 3;

}




На основании которого будет генериться java класс HealthCheckProtos который я буду использовать в Spring контроллере.



Необходимая конфигурация pom.xml





4.0.0


demo
spring-boot-proto3
0.0.1-SNAPSHOT


spring-boot-proto3-domain
jar

spring-boot-proto3-domain
Domain module


${project.basedir}/src/main/proto
${project.build.directory}/generated-sources




com.google.protobuf
protobuf-java


com.googlecode.protobuf-java-format
protobuf-java-format







org.apache.maven.plugins
maven-dependency-plugin
2.10


copy-protoc
generate-sources

copy




com.google.protobuf
protoc
${protobuf.version}
windows-x86_64
exe
true
${project.build.directory}








org.apache.maven.plugins
maven-antrun-plugin
1.8


exec-protoc
generate-sources






















run





org.codehaus.mojo
build-helper-maven-plugin
1.9.1


add-classes
generate-sources

add-source



<$ource>${protobuf.output.directory}














Здесь впринципе все стандартно, кроме: classifier у protoc и protoc.filename у maven-antrun-plugin, они к сожалению привязаны к системе на машине сборки, я собирал на Win X64



Настройка веб модуля




К молулю подключаются spring boot и доменный модуль с классами proto3





4.0.0


demo
spring-boot-proto3
0.0.1-SNAPSHOT


spring-boot-proto3-web
jar

spring-boot-proto3-web
Web module



org.springframework.boot
spring-boot-starter-web


demo
spring-boot-proto3-domain






org.springframework.boot
spring-boot-maven-plugin









После этого необходимо добавить ProtobufHttpMessageConverter к HttpMessageConverter



package demo.config;

import java.util.HashMap;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {

/**
* {@inheritDoc}
*/
@Override
public void configureMessageConverters(List> converters) {
converters.add(protobufHttpMessageConverter());
}

/**
* {@inheritDoc}
*/
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.replaceMediaTypes(new HashMap<>()) //
.favorPathExtension(false) //
.defaultContentType(ProtobufHttpMessageConverter.PROTOBUF);
}

@Bean
ProtobufHttpMessageConverter protobufHttpMessageConverter() {
return new ProtobufHttpMessageConverter();
}

}




Для примера я создал контроллер который бы показывал статус приложения с использованием модели сгенерированной при помощи proto3




package demo.web;

import java.time.LocalDateTime;

import demo.domain.HealthCheckProtos;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HealthCheckController {

@Value("${health.controller.response}")
private String response;
@Value("${health.controller.version}")
private String version;

@RequestMapping("/ping")
public HealthCheckProtos.HealthCheck get() {
return HealthCheckProtos.HealthCheck.newBuilder() //
.setResponse(response) //
.setTimestamp(LocalDateTime.now().toString()) //
.setVersion(version) //
.build();
}

}





При генерации классов proto3 так же генерирует билдеры которые вы можете использовать для создания модели.



Пример запроса к контроллеру




" alt=«image»/>



Так же добавив header «Accept»:«application/json» вы можете получить тот же ответ сериализованный в json.



Использовался следующий материал:


Исходный код проекта можно скачать тут: bitbucket.org/wickiup/spring-boot-proto3

Быстрый старт со spring boot: projects.spring.io/spring-boot

Быстрый старт с proto3: developers.google.com/protocol-buffers/docs/javatutorial
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/304396/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Ada_Peters

Spring, the Morning Room

Суббота, 11 Июня 2016 г. 05:20 (ссылка)




William Rothenstein
(English, 1872 - 1945)

Spring, the Morning Room


Southampton City Art Gallery (United Kingdom - Southampton)
Dates: Date unknown


Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
lj_kavery

Весна уходит

Вторник, 31 Мая 2016 г. 15:33 (ссылка)

Весна уходит.
Плачут птицы. Глаза у рыб
Полны слезами.

Мацуо Басё(1644-1694)

Хороший был май. В смысле погоды. А так эта весна у меня какая-то суматошная и тяжелая. Хорошего много было - вот посмотрела альбом с весенними фото - есть что вспомнить, но и проблем кучу подкинула эта весна. Над проблемами пока работаю и думаю.
А завтра уже ЛЕТО! Планов на лето пока ни каких.

Ну и наслаждаемся сегодня весной, следущая только через год,

12232943_916594921709919_3248228778340150697_o.jpg

И о погоде:
Санкт-Петербург. 31 мая. ИНТЕРФАКС СЕВЕРО-ЗАПАД - Май 2016 года стал самым тёплым по сравнению с показателями для месяца, которые фиксировались последние 110 лет, сообщил журналистам на пресс-конференции в информационном агентстве "Интерфакс Северо-Запад" главный синоптик города Александр Колесов во вторник.
Температура воздуха в мае текущего года в среднем составляла 14,7 градуса, аномалия была высокой - 3,8 градуса. Это самый тёплый май за последние 110 лет", - сказал А.Колесов.
Он отметил, что май 2016 года по статистике уступает только двум годам, когда в этом месяце фиксировались аномально высокие температуры.
"Годы-рекордсмены - это 1906 и 1897, когда средняя температура была 16,1 и 16,7 соответственно. Май 2016 года занял третье место", - добавил А.Колесов.
Он отметил, что высокие температуры воздуха и обилие солнечных дней этой весной стали причиной раннего цветения черемухи, сирени и каштана, что можно было заметить на улицах северной столицы.
Синоптики: Июнь в Петербурге будет дождливее, чем обычно
Июнь в Петербурге будет дождливее, чем обычно. Об этом сообщил главный синоптик Петербурга Александр Колесов в ходе пресс-конференции.
По его словам, уже в эти выходные начнется похолодание. Давление начнет падать уже в пятницу, 3 июня, прогнозируются кратковременные дожди, вероятны грозы. На следующей неделе возможны ночные заморозки, средняя дневная температура 13-17 градусов. Но в середине месяца снова потеплеет.
А вот количество осадков в июне составит 100-140%. "Осадков будет много, а вот в июле и августе, наоборот, мало", – сказал Колесов. Это является аномалией, так как традиционно июль и август являются более дождливыми месяцами.
Средняя температура воздуха летом составит 18-19 градусов. Для сравнения, в прошлом году было 17 градусов.

http://kavery.livejournal.com/2844357.html

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<spring - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda