O documento descreve as vantagens e desvantagens do framework Spring MVC. Entre as vantagens estão a simplicidade, integração com outros frameworks e suporte a diferentes views. As desvantagens incluem a necessidade de configurações em XML e dificuldade em tratar erros. O documento também explica anotações comuns como @Controller, @RequestMapping e @Autowired.
CamundaCon 2018: Using Zeebe with Spring Boot and Apache Camel (Holisticon)camunda services GmbH
Presented by Jan Galinski
Zeebe is the new microservice orchestration engine by camunda. It allows clients to subscribe to tasks and track the completion and overall end-to-end progress of your business processes. It basically consists of a network of brokers and clients, which can be written in multiple languages.
Spring Boot is a platform to create self-contained microservice on the JVM and supports integration in „cloud“ environments.
Bringing those two ideas together seems like a natural fit. To simplify writing jvm-based zeebe-clients with spring boot, I set up the spring-zeebe extension, which brings the „everything just works“ feeling you expect from a spring boot starter to the zeebee world.
But what if you run these spring boot clients in a cloud environment? The current broker-client architecture relies on host/port binding, a luxuary you might not have when your components are highly distributed and cannot see each other in the network.
That’s where apache camel comes to the rescue. Camel is an enterprise integration solution that supports many messaging middlewares and frees your code from actually knowing if the communication will be tcp, jms, kafka or even file-based. With the camel-zeebe extension you can leverage these benefits and subscribe to arbitrary message channels to connect to the broker instead of relying on a tcp host/port connection.
What happens in this talk: – short introduction to zeebe, spring boot, camel – life demo setting up broker/client with spring boot – life demo enhancing this approach with camel and rabbitMq
Ask the AEM Community Expert : May Session. This session will cover in depth sling concepts such as Sling Selectors, Default Sling Post Servlet, Sling Models, and the Sling API.
The motivation on why and when to use API-First service design. What are the real-life poblems in application development with regard to API's ? And how to solve these using tools like Swagger Editor , Swagger UI and Swagger-codegen. And how can an API Manager tool help to manage the Apllication Lifecycle of your API ( publishing , versioning, registration of consumers , quota's and rate-limiting )
CamundaCon 2018: Using Zeebe with Spring Boot and Apache Camel (Holisticon)camunda services GmbH
Presented by Jan Galinski
Zeebe is the new microservice orchestration engine by camunda. It allows clients to subscribe to tasks and track the completion and overall end-to-end progress of your business processes. It basically consists of a network of brokers and clients, which can be written in multiple languages.
Spring Boot is a platform to create self-contained microservice on the JVM and supports integration in „cloud“ environments.
Bringing those two ideas together seems like a natural fit. To simplify writing jvm-based zeebe-clients with spring boot, I set up the spring-zeebe extension, which brings the „everything just works“ feeling you expect from a spring boot starter to the zeebee world.
But what if you run these spring boot clients in a cloud environment? The current broker-client architecture relies on host/port binding, a luxuary you might not have when your components are highly distributed and cannot see each other in the network.
That’s where apache camel comes to the rescue. Camel is an enterprise integration solution that supports many messaging middlewares and frees your code from actually knowing if the communication will be tcp, jms, kafka or even file-based. With the camel-zeebe extension you can leverage these benefits and subscribe to arbitrary message channels to connect to the broker instead of relying on a tcp host/port connection.
What happens in this talk: – short introduction to zeebe, spring boot, camel – life demo setting up broker/client with spring boot – life demo enhancing this approach with camel and rabbitMq
Ask the AEM Community Expert : May Session. This session will cover in depth sling concepts such as Sling Selectors, Default Sling Post Servlet, Sling Models, and the Sling API.
The motivation on why and when to use API-First service design. What are the real-life poblems in application development with regard to API's ? And how to solve these using tools like Swagger Editor , Swagger UI and Swagger-codegen. And how can an API Manager tool help to manage the Apllication Lifecycle of your API ( publishing , versioning, registration of consumers , quota's and rate-limiting )
Este conteúdo disponibiliza um curso para o desenvolvimento de APIs RESTful utilizando recursos avançados da especificações JAX-RS, seguindo as boas práticas de desenvolvimento de APIs REST com base nos níveis de maturidade REST descritos por Leonard Richardson.
A customização da API RESTful é realizada a partir de providers JAX-RS, implementando a autenticação com JWT (Json Web Token) e customizações de Hypermedia, tornando a API altamente customizável e adaptável para a leitura e escrita de tipos de dados de vários formatos enviados e recebidos pelo cliente da API REST.
Além do desenvolvimento da API em JAX-RS, será demonstrado exemplos de utilização da API via interfaces Resources, criado clientes proxies HTTP para consumir a API utilizando as implementações da especificação JAX-RS RestEasy.
Todo o código fonte está disponibilizado no repositório: https://bitbucket.org/luan_knebel/vendarapidarestapi/src/master
Obs: Ao baixar o PDF as imagens estarão em melhor qualidade.
Last updated on Dec 12, 2014
The Sightly template language, shipped with Adobe Experience Manager 6.0, simplifies a lot the component development workflow by allowing front-end developers to edit components themselves directly.
Learn about the main features of that template language, and about the tools available to make project development work more efficient.
This presentation provides a comprehensive overview of Maven 3 including lifecycles and a detail of the default lifecycle and the associated phases within.
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
These were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
Este conteúdo disponibiliza um curso para o desenvolvimento de APIs RESTful utilizando recursos avançados da especificações JAX-RS, seguindo as boas práticas de desenvolvimento de APIs REST com base nos níveis de maturidade REST descritos por Leonard Richardson.
A customização da API RESTful é realizada a partir de providers JAX-RS, implementando a autenticação com JWT (Json Web Token) e customizações de Hypermedia, tornando a API altamente customizável e adaptável para a leitura e escrita de tipos de dados de vários formatos enviados e recebidos pelo cliente da API REST.
Além do desenvolvimento da API em JAX-RS, será demonstrado exemplos de utilização da API via interfaces Resources, criado clientes proxies HTTP para consumir a API utilizando as implementações da especificação JAX-RS RestEasy.
Todo o código fonte está disponibilizado no repositório: https://bitbucket.org/luan_knebel/vendarapidarestapi/src/master
Obs: Ao baixar o PDF as imagens estarão em melhor qualidade.
Last updated on Dec 12, 2014
The Sightly template language, shipped with Adobe Experience Manager 6.0, simplifies a lot the component development workflow by allowing front-end developers to edit components themselves directly.
Learn about the main features of that template language, and about the tools available to make project development work more efficient.
This presentation provides a comprehensive overview of Maven 3 including lifecycles and a detail of the default lifecycle and the associated phases within.
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
These were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
Get into Functional Programming with ClojureJohn Stevenson
A brief guide on how to think in the way of Functional Programming, using Clojure as the example code.
Covers the main concepts and abstractions within Functional Programming & Clojure
Presented at several conferences and meetup events through 2016, with a video captured via GoPro at CeBIT Developer world 2016 on youtube at:
https://www.youtube.com/watch?v=mEfqULqChZs
Let us explore Java 8 features and start using it in your day to day work. You will be surprised how Java has evolved to become so different yet easy & powerful. In this presentation, we discuss Java 8 Stream API.
Spring Web MVC é um sofisticado framework para desenvolvimento de aplicativos web. A apresentação ilustra fundamentos introdutórios e características do framework.
Apresentação do Marco Silva sobre a utilização de KnockoutJS com ASP .NET MVC 3 na 28a Reunião Presencial da Comunidade NetPonto em Lisboa (http://netponto.org).
Neste material tento deixar claro de uma vez por todas como deve ser uma War Room e como é empregado errado no mercado e ao invés de uma prática de motivação juntando as pessoas as empresas conseguem afastar e desmotivar seus profissionais, utilizando as ferramentas de forma certa te garante engajamento e lealdade.
O material é livre e pode ser utilizado mantendo as referências ao autor.
Material dedicado a gestores e times de desenvolvimento de software.
Apresentação dedicada para gestores, times e equipes que desejam aprender e praticar técnicas de Feedback, a importância do feedback e como podemos utilizar.
Material aberto e grátis desde que mantenham a originalidade e referências sobre o autor.
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeisEduardo Bregaida
Apresentação feita no Encontro Ágil #EA2010 da USP, mostrando pontos falhos na cultura da empresa. Gravação: http://bit.ly/ea2010Bregaida By Suelen Carvalho
Gostaria de agradecer ao Danilo Sato, Emmanuel Santana, Luca Bastos, Maciel, Moreira, Luiz Aguiar, Fernando Boaglio (ele tem umas fotos de Kanban muito boas no qual utilizei nessa apresentação), Rodrigo de Toledo e Roberto Nogueira pela ajuda e revisão dos Slides e também gostaria de agradecer toda lista de discussão do Visão Ágil, que me deram muitas dicas e fontes interessantes.
6. Spring Framework
• Criado por Rod Johnson
• Framework não intrusivo
• Baseado em padrões IoC e Injeção de
Dependência
• O Container se encarrega de instanciar as
classes Java e definir suas dependências
• Possui uma arquitetura baseada em POJOs
e Interfaces
7. Vantagens
• Simples e de fácil aprendizado
• Liberdade para trabalhar na View
• Integração simples com outros frameworks
• Navegação feita por anotações
• BindResult e ModelAndView faz todo trabalho
nas telas para validação e estado da página
• Suporte a várias Views Freemaker, JSP, Velocity
• Integração com Hibernate Validator
8. Anotações mais utilizadas
• @Repository - Repositório dos dados
• @Service - Camada de Serviços
• @Qualifier - Qual Bean deverá ser injetado
• @Autowired - Injeção dos Beans
• @Controller - Camada View
• @RequestMapping - Mapeamento do caminho
• @RequestParam - Recebimento dos Parametros
• @ResponseBody -Suporte a REST
• @Valid - Responsável pela validação do parametro ou
formulário
14. @RequestMapping
@Controller
@RequestMapping("/produto/**")
public class ProdutoController {
@RequestMapping("/produto/formulario")
public ModelAndView formulario() {
return new ModelAndView("formulario").addObject("produtoForm", new
ProdutoForm());
}
@RequestMapping("/produto/adiciona")
public ModelAndView adiciona(@Valid ProdutoForm produtoForm,
BindingResult result) {
if (result.hasErrors()) {
return new
ModelAndView("formulario").addAllObjects(result.getModel());
}
populaBean(produtoForm);
produtoService.salva(produto);
return new ModelAndView("lista").addObject("produtos",
produtoService.pegaTodos());
}
}
15. @RequestParam
@RequestMapping(value = "/produto/remove", method = RequestMethod.GET)
public ModelAndView remove(@Valid @RequestParam(value = "produto.id") long id)
{
produto = new Produto();
produto.setId(id);
produtoService.remove(produto);
return new ModelAndView("lista").addObject("produtos", produtoService.pegaTodos());
}
16. @ResponseBody
• Basta incluir os jars Jackson no projeto e será retornado um
JSON:
• jackson-core-asl-1.4.3.jar
• jackson-mapper-asl-1.4.3.jar
public @ResponseBody HashMap<String,Object> view(@RequestParam("start") int start,
@RequestParam("limit") int limit) {
List<Produto> produtos = produtoService.pegaTodos();
HashMap<String, Object> modelMap = new HashMap<String,Object>();
modelMap.put("produtos", produtos);
return modelMap;
}
17. @ResponseBody
Com Nice URL
@RequestMapping(value = "/{idParceiro}/{idModalidade}", method = RequestMethod.GET)
@ResponseBody
public Modalidade obtemModalidade(@PathVariable("idParceiro") Long idParceiro,
@PathVariable("idModalidade") Long idModalidade, HttpSession sessao){
return modalidadeService.obtemModalidadePorParceiro(idParceiro, idModalidade);
}
18. ModelAndView
@RequestMapping("/produto/formulario")
public ModelAndView formulario() {
return new ModelAndView("formulario").addObject("produtoForm", new ProdutoForm());
}
@RequestMapping("/produto/adiciona")
public ModelAndView adiciona(@Valid ProdutoForm produtoForm, BindingResult result) {
if (result.hasErrors()) {
return new ModelAndView("formulario").addAllObjects(result.getModel());
}
populaBean(produtoForm);
produtoService.salva(produto);
return new ModelAndView("lista").addObject("produtos", produtoService.pegaTodos());
}
19. @Valid
No Atributo
public ModelAndView remove(@Valid @RequestParam(value = "produto.id") long id) {
//Código do método
}
No Formulário
@RequestMapping("/produto/adiciona")
public ModelAndView adiciona(@Valid ProdutoForm produtoForm, BindingResult result) {
if (result.hasErrors()) {
return new ModelAndView("formulario").addAllObjects(result.getModel());
}
populaBean(produtoForm);
produtoService.salva(produto);
return new ModelAndView("lista").addObject("produtos", produtoService.pegaTodos());
}
20. BindResult
@RequestMapping("/produto/adiciona")
public ModelAndView adiciona(@Valid ProdutoForm produtoForm, BindingResult result) {
if (result.hasErrors()) {
return new ModelAndView("formulario").addAllObjects(result.getModel());
}
populaBean(produtoForm);
produtoService.salva(produto);
return new ModelAndView("lista").addObject("produtos", produtoService.pegaTodos());
}
27. Desvantagens
• Tratar erros como 400, 404, 500 não são
simples de tratar
• Poucos componentes de tela feitos
• Ainda possui configurações em XML ou
configurações em classes.