Rumah  >  Soal Jawab  >  teks badan

java - @Autowired可以多次装配一个被@Component修饰的类吗?

我写了一个包装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中文网2741 hari yang lalu354

membalas semua(2)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 09:35:24

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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:35:24

    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

    balas
    0
  • Batalbalas