Rumah >Java >javaTutorial >Bagaimana untuk Menyuntik Hartanah daripada Sumber Luaran ke dalam Kacang Spring Beranotasi?

Bagaimana untuk Menyuntik Hartanah daripada Sumber Luaran ke dalam Kacang Spring Beranotasi?

DDD
DDDasal
2024-11-13 14:01:02644semak imbas

How to Inject Properties from External Sources into Annotated Spring Beans?

Menyuntik Sifat Luaran ke dalam Kacang Spring Beranotasi

Apabila mengkonfigurasi kacang Spring melalui anotasi, nilai sifat daripada sumber luaran menjadi perlu. Artikel ini menangani persoalan tentang cara menyuntik nilai sifat ke dalam kacang yang telah dikonfigurasikan menggunakan anotasi.

Kod yang disediakan menunjukkan Spring bean, PersonDaoImpl, dikonfigurasikan melalui anotasi tanpa definisi yang jelas dalam fail XML Spring. Walau bagaimanapun, timbul keperluan untuk menyuntik sifat daripada app.properties ke dalam kacang ini.

Secara tradisinya, ini akan dicapai dengan mentakrifkan sifat dalam fail XML dan menggunakan PropertyPlaceholderConfigurer untuk membaca nilai daripada fail luaran. Walau bagaimanapun, dengan kacang ditakrifkan melalui anotasi, pendekatan ini tidak boleh dilakukan.

Untuk menangani perkara ini, Spring menawarkan penyelesaian menggunakan sokongan EL dalam Spring 3. Kod berikut menunjukkan idea:

@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {

    @Value("#{systemProperties.databaseName}")
    public void setDatabaseName(String dbName) { ... }
}

Dalam contoh ini, systemProperties ialah objek tersirat yang membenarkan akses kepada sifat sistem. dbName kemudiannya disuntik dengan nilai pangkalan data harta sistemName.

Begitu juga, kacang lain boleh disuntik menggunakan ungkapan EL. Contohnya:

@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }

Di sini, strategyBean diandaikan sebagai Spring bean dan sifat pangkalan dataKeyGeneratornya akan disuntik ke dalam kacang semasa.

Spring juga membenarkan sifat disuntik daripada a Objek sifat:

@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;

Dalam contoh ini, harta daripada objek myProperties ialah disuntik ke dalam medan githubOauthClientId.

Atas ialah kandungan terperinci Bagaimana untuk Menyuntik Hartanah daripada Sumber Luaran ke dalam Kacang Spring Beranotasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn