Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan masalah menggunakan @Value dalam springBoot

Bagaimana untuk menyelesaikan masalah menggunakan @Value dalam springBoot

王林
王林ke hadapan
2023-05-14 18:55:061387semak imbas

Masalah yang timbul daripada menggunakan @Value untuk mendapatkan nilai

Dalam projek springBoot, kami biasanya menulis beberapa laluan atau sumber dalam fail konfigurasi untuk memudahkan pengurusan.

Tetapi mungkin terdapat beberapa masalah semasa mendapatkannya.

file.uploadFolder=E://upload/

1 Secara umumnya tentukan medan

dan gunakan @Value("$ {Name} ") boleh mendapatkan nilai

@Value("${file.uploadFolder}")
    private String uploadFolder;

2. Tetapi biasanya kita akan menggunakannya dalam kelas alat

tetapi medan diubah suai secara statik untuk menjadi pembolehubah statik. Menggunakan kaedah ini Jika nilai tidak dapat diperoleh, apa yang kita dapat adalah batal.

Jadi kita perlu menukar cara untuk mendapatkan nilai, seperti yang ditunjukkan di bawah. Ingat untuk tidak menggunakan statik dalam kaedah yang ditetapkan! ! !

private static String uploadFolder;
public static String getUploadFolder() {
        return uploadFolder;
    }
    @Value("${file.uploadFolder}")
    public  void setUploadFolder(String uploadFolder) {
        Base64Utils.uploadFolder = uploadFolder;
    }

3 Sebaiknya tambahkan @Komponen atau anotasi lain

pada kelas alat untuk membiarkannya diuruskan oleh musim bunga.

Ingat oolong yang berlaku apabila springBoot menggunakan @Value

Lihat kod dahulu

server.port=8007
#mysql配置
url=jdbc:mysql://localhost:3306/lzy_zyg?useUnicode=true&characterEncoding=UTF-8
username=root
password=root

Ini ialah maklumat konfigurasi berkaitan yang diisi dalam application.properties, di mana mysql konfigurasi digunakan sebagai maklumat konfigurasi luaran digunakan.

Kemudian gunakannya di mana perlu seperti berikut

@Configuration
public class JfinalDb
{
    @Value("${url}")
    private String dbUrl;
    @Value("${username}")
    private String dbUName;
    @Value("${password}")
    private String dbPwd;
...
}

Masalah yang sangat pelik berlaku apabila menggunakannya, iaitu nama pengguna dan kata laluan tetapan penamaan adalah betul, dan sambungan setempat juga betul , tetapi selalu Ia adalah ralat bahawa pengesahan sambungan gagal, dan nama pengguna bukan akar.

Akhirnya saya mencetak dbUName dan mendapati bahawa bukan root sama sekali, tetapi nama hos saya!

Jadi di sini, ingatlah untuk tidak menyesuaikan nama pengguna nama dalam fail application.properties, kerana anda tidak akan mendapat hasil yang anda inginkan.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah menggunakan @Value dalam springBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam