In diesem Artikel geht es um die Lösung des Problems, dass Transaktionen nicht mit Federcontainern verwaltet werden können. Ich hoffe, dass er für Sie hilfreich ist.
Ich arbeite kürzlich an einem kleinen Projekt, dem SpringMVC-Mybatis-Framework. Jedes Mal, wenn im Konsolenprotokoll vorhanden ist, wird die JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@59dfe4bc] nicht von der Spring-Ausgabe verwaltet
Es zeigt, dass es ein Problem mit der Transaktionskonfiguration geben muss, also habe ich die Konfigurationsdatei durchgesehen und festgestellt, dass die annotationsbasierte Transaktion konfiguriert wurde und auch die Annotation @Transactional verwendet hat.
Also begann ich darüber nachzudenken, was schief gelaufen ist. Da ich zuvor einige Quellcodes von Spring und einige Quellcodes von SpringMVC gesehen hatte, kamen mir einige Ideen. Ich habe das Problem in der Spring-Konfigurationsdatei
und der SpringMVC-Konfigurationsdatei
Die gescannte Bean in der Spring-Konfigurationsdatei gefunden, spring fügt ihm einen Proxy mit Transaktionsfunktionen hinzu. Nachdem der SpringMVC-Container gestartet wurde, besteht eine Eltern-Kind-Beziehung zum Spring-Container. Getbean Der Prozess besteht darin, zuerst die
Bean aus dem Untercontainer abzurufen. Das Problem liegt hier. Die Beans im Springmvc-Container verfügen nicht über Transaktionsverarbeitungsfunktionen, daher habe ich einige Anpassungen an der Scanstrategie
in der Springmvc-Konfigurationsdatei vorgenommen. Fügen Sie
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
zur Anmerkung hinzu Scannen Sie das Projekt
spring und führen Sie es aus, um die Transaktion zu verwalten.
Das obige ist der detaillierte Inhalt vonLösung des Problems, dass Transaktionen nicht vom Spring-Container verwaltet werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!