Thuum.org

A community for the dragon language of The Elder Scrolls V: Skyrim

Thuum.org

A community for the dragon language of The Elder Scrolls V: Skyrim

Spring Data REST + GemFire ??Repository + Sencha Touch-Integration

 1 

lonipok
January 10, 2024

Spring Data bietet Ihnen mehrere Möglichkeiten, die REST-Repositorys über ein JavaScript-Framework zu nutzen. Wir haben bereits eine Reihe von Tutorials bereitgestellt, in denen die Verwendung von Spring Data REST mit jQuery, AngularJS, Backbone.js und Rest.js erläutert wird. In diesem Tutorial erklären wir Ihnen, wie Sencha Touch für den Zugriff auf die Dienste integriert werden kann.

Sencha Toucheine Hochleistungs- HTML5 Das mobile Anwendungs-Framework ist der Grundstein der Sencha HTML5-Plattform. Sencha Touch wurde für erstklassige Benutzererlebnisse entwickelt und ist das einzige Framework, das es Entwicklern ermöglicht, leistungsstarke Apps zu erstellen, die auf iOS, Android, BlackBerry, Windows Phone und mehr funktionieren.

Unser Ziel bei der Einführung dieses Tutorials ist es nicht, tief in die Diskussion des Sencha Touch-Frameworks einzusteigen, sondern es handelt sich lediglich um ein normales Beispiel mit den Modulen Sencha Touch Model, View & Store.

In diesem Tutorial a Edelsteinfeuer MessageRepository wird mit dem REST-Exporter exportiert, da GemFireBean eine Dummy-Nachricht einfügt Edelsteinfeuer In-Memory-Cache. Die Komponenten eines Sencha Touch-Frameworks tragen einander bei, um die ausgefüllten Nachrichten zu konsumieren. Sehen wir uns an, wie wir dieses Szenario umsetzen könnten. In der Zwischenzeit können Sie uns helfen, indem Sie im Kommentarbereich unten Ihre Kommentare hinterlassen.

1. Projektstruktur

Wenn es um die Implementierung eines Sencha Touch-Moduls geht, müssen Sie der folgenden Struktur folgen, zumindest für die Dateien, die sich auf den Sencha selbst beziehen. Stellen Sie daher sicher, dass sich Ihre Modell-, Ansichts- und Speicher-JavaScript-Dateien im App-Ordner befinden, gefolgt vom Modultyp. Schauen Sie sich die Struktur an.

[Spring Data REST – Sencha Touch – Projektstruktur]

Wie Sie bemerkt haben, befinden sich MessageModel, MessageStore und MessageView unter Ordnern, die ihren Typ angeben. Die Ausnahme hiervon ist die MessageApplication, auf die durch index.html verwiesen wird und die sich daher an einer beliebigen beliebigen Stelle befinden kann.

Spring Data JPA-Tutorial mit Spring Boot

2. Verwendete Werkzeuge

JDK 1.6. Apache Tomcat 7.
GemFire ??7.0.1-Plattform (JAR-Verteilung)
Maven 3.
Tomcat 7.
Sencha Touch
Frühlingsdaten
Frühlingsrahmen

3. Persistente Entitäten

Wir haben eine Nachrichtenentität oder ein Nachrichtenobjekt, das für den Restful-Dienst verwendet werden muss. Dies ist die primäre Entitätsklasse für dieses Tutorial. Hier gibt es nichts Neues, eine Nachrichtenentität wird die einzige Entität sein, in der sich der persistente Speicher befindet Edelsteinfeuer.

Message.java

package net.javabeat.springdata.data; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.gemfire.mapping.Region; @Region("messages") public class Message { @Id private String messageId; private String message; public Message() { } @PersistenceConstructor public Message(String id, String message) { this.messageId = id; this.message = message; } public String getMessageId() { return messageId; } public void setMessageId(String messageId) { this.messageId = messageId; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

4. Spring Data Repository

Das Repository bietet Ihnen eine Abstraktionsschicht, in der Sie noch nie eine Implementierung für Ihre CRUD-Operationen bereitgestellt haben, selbst wenn es nur ein kleiner Teil des Codes war. Was Sie tun müssen, ist, Ihre eigene Schnittstelle zu erstellen, die das spezielle Repository von Spring Data erweitert, und die verbleibende Arbeit bleibt dem Spring-Framework überlassen, um die erforderliche Implementierung abzuschließen. Daher sollten Sie ein Repository wie unten bereitstellen müssen. Wenn Sie sich die folgende Klasse MessageRepository ansehen, erweitert sie das CrudeRepository, die Schnittstelle der Spring-Daten, die die Methoden für die CRUD-Operationen definiert.

MessageRepository.java

package net.javabeat.springdata.repo; import net.javabeat.springdata.data.Message; import org.springframework.data.repository.CrudRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; @RepositoryRestResource(collectionResourceRel="messages",path="messages") public interface MessageRepository extends CrudRepository<Message,Integer> {}

5. Frühlingsgottesdienst

Das Hauptziel der Implementierung eines solchen Dienstes besteht darin, der Anwendung das Einfügen einer Dummy-Nachricht zu ermöglichen Edelsteinfeuer In-Memory-Cache. @Autowired wird zum Kommentieren verwendet setMessageRepository und diese Implementierung gibt Ihnen die Möglichkeit, den Repository-Proxy einzuschleusen/zu verkabeln, indem Sie den Setter anstelle des Felds selbst verwenden. Mit dieser Art der Injektion können Sie beliebige Geschäftslogiken hinzufügen. Um unseren Zweck zu erfüllen, fügen wir den erforderlichen Code zum Einfügen der Nachricht hinzu Edelsteinfeuer Zwischenspeicher.

GemFireBean.java

package net.javabeat.springdata.bean; import net.javabeat.springdata.data.Message; import net.javabeat.springdata.repo.MessageRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class GemFireBean { MessageRepository messageRepository; public GemFireBean(){ } public MessageRepository getMessageRepository() { return messageRepository; } @Autowired public void setMessageRepository(MessageRepository messageRepository) { // Message repository has been set this.messageRepository = messageRepository; // Add some messages into GemFire for being seen Message message = new Message(); message.setMessageId("1"); message.setMessage("Spring Data REST resources can be consumed by different JavaScript framework \n One of the most important framework here is Sencha Touch"); messageRepository.save(message); } }

6. Federkonfigurationen

Dies ist die einfache XML-Konfiguration für die Spring Beans.

SpringContext.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire" xmlns:gfe="http://www.springframework.org/schema/gemfire" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/data/gemfire http://www.springframework.org/schema/data/gemfire/spring-data-gemfire.xsd http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd"> <!-- Search for spring components --> <context:component-scan base-package="net.javabeat"></context:component-scan> <!-- Declare GemFire Cache --> <gfe:cache/> <!-- Local region for being used by the Message --> <gfe:local-region id="messages" value-constraint="net.javabeat.springdata.data.Message"/> <!-- Search for GemFire repositories --> <gfe-data:repositories base-package="net.javabeat.springdata.repo"/> </beans>

7. Repository Rest Dispatcher Servlet und Webbereitstellungsdeskriptor

Um Spring Data Rest neben Ihrer vorhandenen Webanwendung zu installieren, müssen Sie die entsprechende Konfiguration einschließen.

Die Spring Data REST-Konfiguration wird in einer Klasse namens definiert RepositoryRestMvcConfiguration.
Da es sich bei Spring Data REST einfach um eine Spring-MVC-Anwendung handelt, müssen Sie nur das RepositoryRestDispatcherServlet einbinden, um die REST-Funktionalität zu nutzen, wenn wir das Spring-Framework mit XML-Konfigurationen verwenden.

Der Web-Bereitstellungsdeskriptor sieht wie folgt aus.

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" metadata-complete="true" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-config/SpringContext.xml</param-value> </context-param> <servlet> <servlet-name>rest</servlet-name> <servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>rest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>

8. GemFire-Repositorys direkt verfügbar machen

Es handelt sich lediglich um einen Schritt zum Offenlegen der GemFire-Repositorys mithilfe von Google Dev HTTP. Befolgen Sie dazu einfach die folgenden Schritte:

Öffnen Sie Google Chrome Http Dev.
Geben Sie Ihren Host ein, gefolgt von der Portnummer und dem Webkontext für die bereitgestellte Anwendung, was zum Token führen sollte http://localhost:8080/SpringData-GemFire-SenchaTouch-1.0.
Um die Nachrichtenressourcen zu nutzen, müssen Sie die im Abschnitt erwähnte RepositoryRestDispactherServlet-Zuordnungs-URL hinzufügen web.xml und sein /ausruhen/ was zu einem URL-Wert wie folgt führt http://localhost:8080/SpringData-GemFire-REST-SenchaTouch-1.0/rest/
Fügen Sie das Pfadsegment hinzu, unter dem diese Ressource exportiert werden soll. Dieser Wert wurde mithilfe von bereitgestellt Weg -Eigenschaft im Header des MessageRepository, um die Nachrichtenressource wie unten dargestellt verfügbar machen zu können.

[Sencha Touch – Exportieren des GemFire-Repositorys]

9. Implementieren Sie Sencha Touch-Module

Um die Sencha Touch-Module zu implementieren, müssen Sie die folgenden Schritte ausführen:

Erstellen Sie ein Modell, indem Sie ein entwickeln Ext Modell namens MessageModel. Platzieren Sie dieses Modell im Verzeichnis app/model. Dies ist der Standardspeicherort für Sencha Touch-Modelle und ermöglicht dies Senchas Lader es zu finden. Nachrichtenmodell erweitert Ext.data.Model und definiert zwei Felder: message und href.

MessageModel.js

Ext.define('JavaBeat.model.MessageModel', { extend: 'Ext.data.Model', config: { fields: ( { name:'message', name:'href' } ) } });

Erstellen Sie eine Ansicht, indem Sie Senchas verwenden Ext.Panel kann als einfache Ansicht verwendet werden. Diese Datei sollte ebenfalls abgelegt werden Senchas Standardspeicherort für Ansichten /app/view. Der Inhalt der Ansicht wird durch die im beschriebene Vorlage definiert tpl Konfigurationsoption. Diese geschweiften Token (dh {Nachricht}) werden beim Rendern der Ansicht durch die Modellfelder ersetzt.

MessageView.js

Ext.define('JavaBeat.view.MessageView', { extend: 'Ext.Panel', config: { fullscreen: true, tpl:'<p>Message #1 :: {message} :: <a href="https://javabeat.net/spring-data-rest-gemfire-sencha-touch/+"{href}"+">Message Link</a></p>' } });

Als nächstes erstellen Sie eine Ext Speicher, der das Modell lädt. Der Laden vergrößert sich Ext.data.store und verweist auf unser MessageModel. Um den Store anzuweisen, den REST-Proxy zu verwenden, konfigurieren wir ihn mit einem Proxy-Definitionsobjekt mit Typ: „Ruhe“ und verweisen Sie dann auf unsere REST-Endpunkt-URL.

MessageStore.js

Ext.define('JavaBeat.store.MessagesStore', { extend: 'Ext.data.Store', config: { model: 'JavaBeat.model.MessageModel', proxy: { type: 'rest', url: 'http://localhost:8080/SpringData-GemFire-REST-SenchaTouch-1.0/rest/messages' } } });

Als nächstes erstellen Sie eine Ext.Anwendung Objekt mit Senchas Ext.Anwendung Shortcut-Funktion. Das Anwendungsobjekt löst den Speicherort der Modelle, Ansichten und Speicher automatisch auf, wenn Sie die oben erwähnte Standardverzeichniskonvention von Sencha befolgen. Sie müssen auch das Modell, die Ansicht und den Speicher angeben Modelle, Ansichten und Geschäfte Arrays, damit Senchas Loader diese Dateien finden und abrufen kann. Hinzufügen eines Start Rückruf, damit die Anwendung erstellt wird, nachdem alle Dateien geladen wurden. Erstellen Sie innerhalb dieses Rückrufs eine Instanz von Sicht und eine Instanz des Stores. Konfigurieren Sie den Store so, dass er automatisch geladen wird, sodass er das Modell sofort abruft Endpunkt URL. Danach müssen Sie einen Load-Listener hinzufügen, um die abgerufenen Daten in die Ansicht zu verschieben. Wie Sie gesehen haben, wurden einige zusätzliche Anweisungen zum Bearbeiten der darin zu speichernden Antwort hinzugefügt Array von Nachrichten.

MessageApplication.js

Ext.application({ name: 'JavaBeat', models: ( 'MessageModel' ), stores: ( 'MessagesStore' ), views: ( 'MessageView' ), launch: function () { var view = Ext.create('JavaBeat.view.MessageView', {}); Ext.create('JavaBeat.store.MessagesStore', { autoLoad: true, listeners: { load: function (self, records) { // Filling Array of messages var arr = (); for(m in records(0).raw._embedded.messages){ var message = { message: records(0).raw._embedded.messages(m).message, href:records(0).raw._embedded.messages(m)._links.self.href }; arr.push(message); } view.setData(arr(0)); } } }); } }); Ext.Loader.setConfig({ disableCaching: false });

10. HTML-Ansicht

Es handelt sich lediglich um die HTML-Seite, auf der die Bibliothek von Sencha (CDN von Sencha) geladen wurde und auf die MessageApplication.js (Anwendungsobjekt) von Sencha verwiesen wurde.

index.html

<html> <head> <title>JavaBeat Tutorial</title> <script src="//cdn.sencha.io/touch/sencha-touch-2.1.1/sencha-touch-all.js"></script> <script src="MessageApplication.js"></script> </head> <body> <h2>JavaBeat Tutorial</h2> <h3>Spring Data REST - <h3> <h3>Consuming GemFire REST Resources Using Sencha Touch</h3> </body> </html>

11. Maven-Build

Es handelt sich um die Datei, die für das Sammeln der für die aktuelle Anwendung erforderlichen Abhängigkeiten verantwortlich ist.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.javabeat.springdata</groupId> <artifactId>SpringData-GemFire-REST-SenchaTouch</artifactId> <version>1.0</version> <packaging>war</packaging> <name>Spring Data</name> <dependencies> <!-- Spring Data GemFire Library --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-gemfire</artifactId> <version>1.3.4.RELEASE</version> </dependency> <!-- GemFire Platform --> <dependency> <groupId>com.gemstone.gemfire</groupId> <artifactId>gemfire</artifactId> <version>7.0.1</version> </dependency> <!-- Spring Data REST MVC --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-webmvc</artifactId> <version>2.0.2.RELEASE</version> </dependency> <!-- Google List API --> <dependency> <groupId>com.google.collections</groupId> <artifactId>google-collections</artifactId> <version>1.0</version> </dependency> <!-- Required Libraries --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> <version>1.0.2.RELEASE</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>http://repo.spring.io/libs-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>gemstone</id> <url>http://dist.gemstone.com.s3.amazonaws.com/maven/release/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>http://repo.spring.io/libs-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>

12. Spring Data REST + Sencha Touch Demo

Die hier gezeigte Demonstration zeigt Ihnen den Export von Edelsteinfeuer Repository mithilfe von Spring REST. Der Nachrichteninhalt wurde angezeigt, während der HREF der Nachricht unten verlinkt wurde Nachrichtenlink Verknüpfung.
[Sencha Touch – Nutzung des GemFire-Repositorys über die Spring REST-Demo]

13. Zusammenfassung

In diesem Tutorial, das ich erklärt habe, erfahren Sie, wie Sie über die Sencha Touch-Komponenten auf die Spring Data REST-Dienste und das GemFire-In-Memory-Repository zugreifen. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Laden Sie den Quellcode herunter

JavaTipps de

by lonipok
January 10, 2024

Spring Data bietet Ihnen mehrere Möglichkeiten, die REST-Repositorys über ein JavaScript-Framework zu nutzen. Wir haben bereits eine Reihe von Tutorials bereitgestellt, in denen die Verwendung von Spring Data REST mit jQuery, AngularJS, Backbone.js und Rest.js erläutert wird. In diesem Tutorial erklären wir Ihnen, wie Sencha Touch für den Zugriff auf die Dienste integriert werden kann.

Sencha Toucheine Hochleistungs- HTML5 Das mobile Anwendungs-Framework ist der Grundstein der Sencha HTML5-Plattform. Sencha Touch wurde für erstklassige Benutzererlebnisse entwickelt und ist das einzige Framework, das es Entwicklern ermöglicht, leistungsstarke Apps zu erstellen, die auf iOS, Android, BlackBerry, Windows Phone und mehr funktionieren.

Unser Ziel bei der Einführung dieses Tutorials ist es nicht, tief in die Diskussion des Sencha Touch-Frameworks einzusteigen, sondern es handelt sich lediglich um ein normales Beispiel mit den Modulen Sencha Touch Model, View & Store.

In diesem Tutorial a Edelsteinfeuer MessageRepository wird mit dem REST-Exporter exportiert, da GemFireBean eine Dummy-Nachricht einfügt Edelsteinfeuer In-Memory-Cache. Die Komponenten eines Sencha Touch-Frameworks tragen einander bei, um die ausgefüllten Nachrichten zu konsumieren. Sehen wir uns an, wie wir dieses Szenario umsetzen könnten. In der Zwischenzeit können Sie uns helfen, indem Sie im Kommentarbereich unten Ihre Kommentare hinterlassen.

1. Projektstruktur

Wenn es um die Implementierung eines Sencha Touch-Moduls geht, müssen Sie der folgenden Struktur folgen, zumindest für die Dateien, die sich auf den Sencha selbst beziehen. Stellen Sie daher sicher, dass sich Ihre Modell-, Ansichts- und Speicher-JavaScript-Dateien im App-Ordner befinden, gefolgt vom Modultyp. Schauen Sie sich die Struktur an.

[Spring Data REST – Sencha Touch – Projektstruktur]

Wie Sie bemerkt haben, befinden sich MessageModel, MessageStore und MessageView unter Ordnern, die ihren Typ angeben. Die Ausnahme hiervon ist die MessageApplication, auf die durch index.html verwiesen wird und die sich daher an einer beliebigen beliebigen Stelle befinden kann.

Spring Data JPA-Tutorial mit Spring Boot

2. Verwendete Werkzeuge

JDK 1.6. Apache Tomcat 7.
GemFire ??7.0.1-Plattform (JAR-Verteilung)
Maven 3.
Tomcat 7.
Sencha Touch
Frühlingsdaten
Frühlingsrahmen

3. Persistente Entitäten

Wir haben eine Nachrichtenentität oder ein Nachrichtenobjekt, das für den Restful-Dienst verwendet werden muss. Dies ist die primäre Entitätsklasse für dieses Tutorial. Hier gibt es nichts Neues, eine Nachrichtenentität wird die einzige Entität sein, in der sich der persistente Speicher befindet Edelsteinfeuer.

Message.java

package net.javabeat.springdata.data; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.gemfire.mapping.Region; @Region("messages") public class Message { @Id private String messageId; private String message; public Message() { } @PersistenceConstructor public Message(String id, String message) { this.messageId = id; this.message = message; } public String getMessageId() { return messageId; } public void setMessageId(String messageId) { this.messageId = messageId; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

4. Spring Data Repository

Das Repository bietet Ihnen eine Abstraktionsschicht, in der Sie noch nie eine Implementierung für Ihre CRUD-Operationen bereitgestellt haben, selbst wenn es nur ein kleiner Teil des Codes war. Was Sie tun müssen, ist, Ihre eigene Schnittstelle zu erstellen, die das spezielle Repository von Spring Data erweitert, und die verbleibende Arbeit bleibt dem Spring-Framework überlassen, um die erforderliche Implementierung abzuschließen. Daher sollten Sie ein Repository wie unten bereitstellen müssen. Wenn Sie sich die folgende Klasse MessageRepository ansehen, erweitert sie das CrudeRepository, die Schnittstelle der Spring-Daten, die die Methoden für die CRUD-Operationen definiert.

MessageRepository.java

package net.javabeat.springdata.repo; import net.javabeat.springdata.data.Message; import org.springframework.data.repository.CrudRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; @RepositoryRestResource(collectionResourceRel="messages",path="messages") public interface MessageRepository extends CrudRepository<Message,Integer> {}

5. Frühlingsgottesdienst

Das Hauptziel der Implementierung eines solchen Dienstes besteht darin, der Anwendung das Einfügen einer Dummy-Nachricht zu ermöglichen Edelsteinfeuer In-Memory-Cache. @Autowired wird zum Kommentieren verwendet setMessageRepository und diese Implementierung gibt Ihnen die Möglichkeit, den Repository-Proxy einzuschleusen/zu verkabeln, indem Sie den Setter anstelle des Felds selbst verwenden. Mit dieser Art der Injektion können Sie beliebige Geschäftslogiken hinzufügen. Um unseren Zweck zu erfüllen, fügen wir den erforderlichen Code zum Einfügen der Nachricht hinzu Edelsteinfeuer Zwischenspeicher.

GemFireBean.java

package net.javabeat.springdata.bean; import net.javabeat.springdata.data.Message; import net.javabeat.springdata.repo.MessageRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class GemFireBean { MessageRepository messageRepository; public GemFireBean(){ } public MessageRepository getMessageRepository() { return messageRepository; } @Autowired public void setMessageRepository(MessageRepository messageRepository) { // Message repository has been set this.messageRepository = messageRepository; // Add some messages into GemFire for being seen Message message = new Message(); message.setMessageId("1"); message.setMessage("Spring Data REST resources can be consumed by different JavaScript framework \n One of the most important framework here is Sencha Touch"); messageRepository.save(message); } }

6. Federkonfigurationen

Dies ist die einfache XML-Konfiguration für die Spring Beans.

SpringContext.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire" xmlns:gfe="http://www.springframework.org/schema/gemfire" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/data/gemfire http://www.springframework.org/schema/data/gemfire/spring-data-gemfire.xsd http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd"> <!-- Search for spring components --> <context:component-scan base-package="net.javabeat"></context:component-scan> <!-- Declare GemFire Cache --> <gfe:cache/> <!-- Local region for being used by the Message --> <gfe:local-region id="messages" value-constraint="net.javabeat.springdata.data.Message"/> <!-- Search for GemFire repositories --> <gfe-data:repositories base-package="net.javabeat.springdata.repo"/> </beans>

7. Repository Rest Dispatcher Servlet und Webbereitstellungsdeskriptor

Um Spring Data Rest neben Ihrer vorhandenen Webanwendung zu installieren, müssen Sie die entsprechende Konfiguration einschließen.

Die Spring Data REST-Konfiguration wird in einer Klasse namens definiert RepositoryRestMvcConfiguration.
Da es sich bei Spring Data REST einfach um eine Spring-MVC-Anwendung handelt, müssen Sie nur das RepositoryRestDispatcherServlet einbinden, um die REST-Funktionalität zu nutzen, wenn wir das Spring-Framework mit XML-Konfigurationen verwenden.

Der Web-Bereitstellungsdeskriptor sieht wie folgt aus.

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" metadata-complete="true" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-config/SpringContext.xml</param-value> </context-param> <servlet> <servlet-name>rest</servlet-name> <servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>rest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>

8. GemFire-Repositorys direkt verfügbar machen

Es handelt sich lediglich um einen Schritt zum Offenlegen der GemFire-Repositorys mithilfe von Google Dev HTTP. Befolgen Sie dazu einfach die folgenden Schritte:

Öffnen Sie Google Chrome Http Dev.
Geben Sie Ihren Host ein, gefolgt von der Portnummer und dem Webkontext für die bereitgestellte Anwendung, was zum Token führen sollte http://localhost:8080/SpringData-GemFire-SenchaTouch-1.0.
Um die Nachrichtenressourcen zu nutzen, müssen Sie die im Abschnitt erwähnte RepositoryRestDispactherServlet-Zuordnungs-URL hinzufügen web.xml und sein /ausruhen/ was zu einem URL-Wert wie folgt führt http://localhost:8080/SpringData-GemFire-REST-SenchaTouch-1.0/rest/
Fügen Sie das Pfadsegment hinzu, unter dem diese Ressource exportiert werden soll. Dieser Wert wurde mithilfe von bereitgestellt Weg -Eigenschaft im Header des MessageRepository, um die Nachrichtenressource wie unten dargestellt verfügbar machen zu können.

[Sencha Touch – Exportieren des GemFire-Repositorys]

9. Implementieren Sie Sencha Touch-Module

Um die Sencha Touch-Module zu implementieren, müssen Sie die folgenden Schritte ausführen:

Erstellen Sie ein Modell, indem Sie ein entwickeln Ext Modell namens MessageModel. Platzieren Sie dieses Modell im Verzeichnis app/model. Dies ist der Standardspeicherort für Sencha Touch-Modelle und ermöglicht dies Senchas Lader es zu finden. Nachrichtenmodell erweitert Ext.data.Model und definiert zwei Felder: message und href.

MessageModel.js

Ext.define('JavaBeat.model.MessageModel', { extend: 'Ext.data.Model', config: { fields: ( { name:'message', name:'href' } ) } });

Erstellen Sie eine Ansicht, indem Sie Senchas verwenden Ext.Panel kann als einfache Ansicht verwendet werden. Diese Datei sollte ebenfalls abgelegt werden Senchas Standardspeicherort für Ansichten /app/view. Der Inhalt der Ansicht wird durch die im beschriebene Vorlage definiert tpl Konfigurationsoption. Diese geschweiften Token (dh {Nachricht}) werden beim Rendern der Ansicht durch die Modellfelder ersetzt.

MessageView.js

Ext.define('JavaBeat.view.MessageView', { extend: 'Ext.Panel', config: { fullscreen: true, tpl:'<p>Message #1 :: {message} :: <a href="https://javabeat.net/spring-data-rest-gemfire-sencha-touch/+"{href}"+">Message Link</a></p>' } });

Als nächstes erstellen Sie eine Ext Speicher, der das Modell lädt. Der Laden vergrößert sich Ext.data.store und verweist auf unser MessageModel. Um den Store anzuweisen, den REST-Proxy zu verwenden, konfigurieren wir ihn mit einem Proxy-Definitionsobjekt mit Typ: „Ruhe“ und verweisen Sie dann auf unsere REST-Endpunkt-URL.

MessageStore.js

Ext.define('JavaBeat.store.MessagesStore', { extend: 'Ext.data.Store', config: { model: 'JavaBeat.model.MessageModel', proxy: { type: 'rest', url: 'http://localhost:8080/SpringData-GemFire-REST-SenchaTouch-1.0/rest/messages' } } });

Als nächstes erstellen Sie eine Ext.Anwendung Objekt mit Senchas Ext.Anwendung Shortcut-Funktion. Das Anwendungsobjekt löst den Speicherort der Modelle, Ansichten und Speicher automatisch auf, wenn Sie die oben erwähnte Standardverzeichniskonvention von Sencha befolgen. Sie müssen auch das Modell, die Ansicht und den Speicher angeben Modelle, Ansichten und Geschäfte Arrays, damit Senchas Loader diese Dateien finden und abrufen kann. Hinzufügen eines Start Rückruf, damit die Anwendung erstellt wird, nachdem alle Dateien geladen wurden. Erstellen Sie innerhalb dieses Rückrufs eine Instanz von Sicht und eine Instanz des Stores. Konfigurieren Sie den Store so, dass er automatisch geladen wird, sodass er das Modell sofort abruft Endpunkt URL. Danach müssen Sie einen Load-Listener hinzufügen, um die abgerufenen Daten in die Ansicht zu verschieben. Wie Sie gesehen haben, wurden einige zusätzliche Anweisungen zum Bearbeiten der darin zu speichernden Antwort hinzugefügt Array von Nachrichten.

MessageApplication.js

Ext.application({ name: 'JavaBeat', models: ( 'MessageModel' ), stores: ( 'MessagesStore' ), views: ( 'MessageView' ), launch: function () { var view = Ext.create('JavaBeat.view.MessageView', {}); Ext.create('JavaBeat.store.MessagesStore', { autoLoad: true, listeners: { load: function (self, records) { // Filling Array of messages var arr = (); for(m in records(0).raw._embedded.messages){ var message = { message: records(0).raw._embedded.messages(m).message, href:records(0).raw._embedded.messages(m)._links.self.href }; arr.push(message); } view.setData(arr(0)); } } }); } }); Ext.Loader.setConfig({ disableCaching: false });

10. HTML-Ansicht

Es handelt sich lediglich um die HTML-Seite, auf der die Bibliothek von Sencha (CDN von Sencha) geladen wurde und auf die MessageApplication.js (Anwendungsobjekt) von Sencha verwiesen wurde.

index.html

<html> <head> <title>JavaBeat Tutorial</title> <script src="//cdn.sencha.io/touch/sencha-touch-2.1.1/sencha-touch-all.js"></script> <script src="MessageApplication.js"></script> </head> <body> <h2>JavaBeat Tutorial</h2> <h3>Spring Data REST - <h3> <h3>Consuming GemFire REST Resources Using Sencha Touch</h3> </body> </html>

11. Maven-Build

Es handelt sich um die Datei, die für das Sammeln der für die aktuelle Anwendung erforderlichen Abhängigkeiten verantwortlich ist.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.javabeat.springdata</groupId> <artifactId>SpringData-GemFire-REST-SenchaTouch</artifactId> <version>1.0</version> <packaging>war</packaging> <name>Spring Data</name> <dependencies> <!-- Spring Data GemFire Library --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-gemfire</artifactId> <version>1.3.4.RELEASE</version> </dependency> <!-- GemFire Platform --> <dependency> <groupId>com.gemstone.gemfire</groupId> <artifactId>gemfire</artifactId> <version>7.0.1</version> </dependency> <!-- Spring Data REST MVC --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-webmvc</artifactId> <version>2.0.2.RELEASE</version> </dependency> <!-- Google List API --> <dependency> <groupId>com.google.collections</groupId> <artifactId>google-collections</artifactId> <version>1.0</version> </dependency> <!-- Required Libraries --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> <version>1.0.2.RELEASE</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>http://repo.spring.io/libs-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>gemstone</id> <url>http://dist.gemstone.com.s3.amazonaws.com/maven/release/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>http://repo.spring.io/libs-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>

12. Spring Data REST + Sencha Touch Demo

Die hier gezeigte Demonstration zeigt Ihnen den Export von Edelsteinfeuer Repository mithilfe von Spring REST. Der Nachrichteninhalt wurde angezeigt, während der HREF der Nachricht unten verlinkt wurde Nachrichtenlink Verknüpfung.
[Sencha Touch – Nutzung des GemFire-Repositorys über die Spring REST-Demo]

13. Zusammenfassung

In diesem Tutorial, das ich erklärt habe, erfahren Sie, wie Sie über die Sencha Touch-Komponenten auf die Spring Data REST-Dienste und das GemFire-In-Memory-Repository zugreifen. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Laden Sie den Quellcode herunter

JavaTipps de