2017-04-21 3 views
0

Ich habe customDao wie unten in meinem springboot app,Frühling Boot: Update-Operation in neuen Thread

@Component 
public class CustomDao { 

    private final JdbcTemplate jdbcTemplate 

    @Autowired 
    private PlatformTransactionManager transactionManager; 

    def logger = LoggerFactory.getLogger(this.class); 
    @Autowired 
    public CustomDao(JdbcTemplate template) { 
     this.jdbcTemplate = template 
    } 


    public insertRecord(sql,params){ 
     //insert 
    } 

    public updateRecord(sql,params){ 
     //update 
    } 
} 

und ich versuche nur Aktualisierungsvorgang asynchron in einem neuen Thread zu machen, haben Ich arbeitete viel auf Themen, können jemand bitte hilf mir dabei?

+1

Überprüfen Sie [diesen Artikel] (http://www.baeldung.com/spring-async) für eine sanfte Einführung, was Sie mit Spring '@ Async' Annotation machen könnten. – zloster

Antwort

1

Sie können Ihre updateRecord Methode dies ändern:

public void updateRecord(sql, params) { 
    Thread t = new Thread() { 
     //Your code to update here 
    } 
    t.start(); 
} 

Thread t = new Thread() {...} einen neuen Thread erstellt die angegebene Arbeit zu tun und t.start() wird der Faden im Hintergrund ausgeführt werden.

+1

Er benötigt aber auch die 'ThreadLocals' aus dem Original-Thread. Der Frühling speichert dort wichtige Dinge. Es ist auch besser, irgendeine Art von Thread-Pool zu verwenden. Der derzeitige Ansatz wird schnell "teuer". – zloster

+0

@zloster könntest du bitte deine Antwort mit Thread-Pool und ThreadLocals geben – RanPaul

+0

@RanPaun Siehe [diese Antwort] (http://stackoverflow.com/a/33337838/25429) für die 'ThreadLocals' - abhängig von der Code-Basis du kann oder darf sie nicht brauchen. Über den ThreadPool: Sie spezifizieren ['@Async (" customThreadPoolExecutor ")] (http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#scheduling-annotation-support-qualification) und [definiere die Konfiguration] (http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#scheduling-task-namespace-executor) von customThreadPoolExecutor. – zloster

1

Sie sollten @Async verwenden, um asynchrone Tasks in Spring zu verarbeiten. Sie können ein Beispiel here finden.