java - spring-boot怎样优雅得插入一个后台线程?
巴扎黑
巴扎黑 2017-04-18 10:48:11
0
4
677

我有一个守护,可它需要插入数据到数据库.不知道怎样注入Bean服务,所以目前是这样的:

public static void main(String[] args) {
         Thread daemon=new Thread(new DaemonRun());        
            daemon.setDaemon(true);
            daemon.start();   
        SpringApplication.run(Application.class, args);
    }
    ....
public class DaemonRun implements Runnable {
    private DataService dataService;
    public synchronized  DataService getDataService(){
        if(dataService==null)
                dataService=(DataService)SpringApplicationContextHolder.getSpringBean("dataService");
        return dataService;
    }

有没有办法让DataService 自动注入DaemonRun同时DaemonRun又开机运行在一个独立线程里呢?

巴扎黑
巴扎黑

membalas semua(4)
Peter_Zhu

Maaf semua, saya sendiri yang jumpa jalan.: http://stackoverflow.com/ques...

Mengikut jawapan Tukar kepada
@Component
kelas ThreadRun melaksanakan DisposableBean.... Kemudian mulakan benang dalam struktur, tutup benang dalam hancurkan, dan anda boleh menggunakan suntikan automatik

左手右手慢动作

Adakah anda maksudkan anda mahu menyuntik kacang antara muka secara automatik? Anda boleh merujuk kepada suntikan spring kacang kelas abstrak atau objek antara muka
untuk mencipta kelas abstrak yang dilaksanakan oleh DataService Runnable untuk suntikan. Kemudian memanjangkannya.
Oleh kerana kitaran hayat springbean selesai apabila beanFactory dicipta, objek anda perlu disuntik hanya apabila ia dicipta, yang bercanggah dengan konsep spring.

Yang berikut diambil daripada stackoverflow,

    
Mark the abstract base class definition as abstract by using the abstract attribute , and in the concrete class definition , make the parent attribute be the name of the abstract class 's bean name

Something like this:

<bean id="abstractBaseClass" abstract="true" class="pacakge1.AbstractBaseClass">
  <property name="mailserver" value="DefaultMailServer"/>
</bean>

<bean id="concreteClass1" class="pacakge1.ConcreteClass1" parent="abstractBaseClass">     
  <!--Override the value of the abstract based class if necessary-->
  <property name="mailserver" value="AnotherMailServer"/>
</bean>
PHPzhong

Gunakan suntikan automatik dan cuba konfigurasikan skop sebagai prototaip.

伊谢尔伦

Untuk apa benang ini digunakan?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!