java - @Autowired可以多次装配一个被@Component修饰的类吗?
PHP中文网
PHP中文网 2017-04-18 09:33:24
0
2
392

我写了一个包装Ehcache的类EhcacheWrapper,加入多线程控制,代码如下

@service
public class EhcacheWrapper{
   public Element get(String cacheName, String key){......}
   public void put(String cacheName, String key, Object value){......}
   //多线程控制,代码略
}

我在一个controller中自动装配EhcacheWrapper,比如

public class GetLabelServiceImpl{
   @Autowired
   private EhcacheWrapper ehcacheWrapper;
   //代码略
}

我在其他controller中还能@Autowired EhcacheWrapper吗?

我觉得@Component默认的scope是singleton,只有一个实例。如果在两个类中都@Autowired EhcacheWrapper,是不是两个类都调用同一个bean呢?EhcacheWrapper有多线程控制,这样做是不是有什么问题?应该怎么处理比较好?

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
洪涛

Pemahaman anda betul Ia boleh dihimpunkan beberapa kali, tetapi contoh yang sama disuntik, jadi anda perlu mengendalikan konkurensi sendiri

Ty80
  1. Seperti yang @chiyx katakan, kedua-duanya Controller memanggil contoh yang sama

  2. Mengikut kelas EhcacheWrapper yang anda tulis (tanpa pembolehubah global), mengikut kod yang anda berikan, tiada syarat perlumbaan, jadi tidak akan ada masalah konkurensi, melainkan terdapat persaingan dalam put Kaedah Syarat Sebaliknya, jika terdapat syarat pertandingan dalam put, ia sebenarnya tidak ada kena mengena sama ada kelas EhcacheWrapper adalah satu

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan