Ich habe eine einfache WebSocket eingerichtet und versuchen, Daten zu speichern. Irgendwie werden die Daten nicht beibehalten. Ich bekomme keine Fehlermeldungen und das Objekt wird korrekt an den Client zurückgegeben. Wenn ich versuche, das Objekt mit einem REST-Controller und einer REST-Anforderung zu speichern, funktioniert es.Spring Boot speichern Daten mit WebSockets
Hier sind die Abhängigkeiten von meiner build.gradle Datei:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'org.springframework.boot:spring-boot-starter-websocket'
compile 'org.springframework:spring-messaging'
compile 'com.google.code.gson:gson:1.7.2'
compile 'org.postgresql:postgresql:9.4-1200-jdbc41'
compile 'commons-dbcp:commons-dbcp:1.4'
testCompile('org.springframework.boot:spring-boot-startet-test')
}
PersonController
@Controller
public class PersonController {
@Autowired
PersonRepository personRepository;
@MessageMapping("/test")
@SendTo("/response/test")
public Person test() throws Exception {
Person person = new Person();
person.setName("John Doe");
return personRepository.save(person);
}
}
Konfiguration für STOMP Messaging
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/response");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket")
.setAllowedOrigins("*")
.withSockJS();
}
Entität Person
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return getName;
}
public void setName(String name) {
this.name = name;
}
}
Base-Repository
@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends Repository<T, ID> {
void delete(T deleted);
void delete(ID id);
Iterable<T> findAll();
T findOne(ID id);
T save(T persisted);
Iterable<T> save(Iterable<T> persited);
}
Person Repository
public interface PersonRepository extends
BaseRepository<Person, Serializable> {
}
- Gibt es eine probl em in meinem Code?
- Gibt es ein Problem mit dem Caching? Muss ich eine Spülung erzwingen?
- Werden Daten mit WebSockets gespeichert, die von SpringBoot unterstützt werden?
- Kennen Sie Beispiele für das Speichern von Daten? Ich konnte nur grundlegende Beispiele finden, ohne Daten zu speichern.
Werden die Daten mit WebSockets von SpringBoot unterstützt Speicherung? Ja, es gibt keine solche Einschränkung, da ich eine Anwendung in der Produktion habe, wo Daten vom Browser auf dem Websocket zum Springboot-Backend geschickt werden und die Geschäftslogik einschließlich Insertion, Update etc –