Classe d'outils Spring - Utilisation de ReflectUtils

URL d'origine : Série d'outils Spring - Utilisation de ReflectUtils_IT Knives Out Blog-CSDN Blog

Introduction

Cet article présente l'utilisation de ReflectUtils de Spring.

Le but de la classe d'outils ReflectUtils : faciliter les opérations de réflexion.

Spring a également une classe d'outils : ReflectionUtils . La plus grande différence dans leurs fonctions est que ReflectionUtils peut obtenir toutes les descriptions d'attributs de la classe de type (tous les champs de cette classe et la classe parent (y compris privée)), mais ReflectionUtils ne peut pas obtenir les descriptions privées. de la classe parent.

Exemple

Condition : modifiez l'attribut pageSize de la classe parent à 30 par réflexion.

Classe d'essai

package com.knife.controller;

import com.knife.entity.User;
import org.springframework.cglib.core.ReflectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@RestController
public class HelloController {

    @GetMapping("/test")
    public String test() {
        User user = new User();
        user.setId(3L);
        user.setUserName("Tony");
        user.setCurrent(4);
        user.setPageSize(20);

        Class<? extends User> aClass = user.getClass();

        System.out.println("-------- 所有的属性名 --------");
        PropertyDescriptor[] beanProperties = ReflectUtils.getBeanProperties(aClass);
        for (PropertyDescriptor beanProperty : beanProperties) {
            String name = beanProperty.getName();
            System.out.println(name);

            if ("pageSize".equals(name)) {
                Method writeMethod = beanProperty.getWriteMethod();
                try {
                    writeMethod.invoke(user, 30);
                } catch (IllegalAccessException | InvocationTargetException e) {
                    throw new RuntimeException(e);
                }
            }
        }

        System.out.println("-------- 新的字段值(pageSize)");
        System.out.println(user.getPageSize());

        return "test success";
    }
}

Entité

package com.knife.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(callSuper = true)
public class User extends PageRequest{
    private Long id;

    private String userName;

}
package com.knife.entity;

import lombok.Data;

@Data
public class PageRequest {
    private Integer current = 0;

    private Integer pageSize = 10;
}

résultat

-------- 所有的属性名 --------
current
id
pageSize
userName
-------- 新的字段值(pageSize)
30

GetPropertyDescriptor

Ce qui précède fait partie de l'article. Pour faciliter la maintenance, le texte intégral a été transféré à cette URL : Spring Tool Class - Utilisation de ReflectUtils - Assistant d'auto-apprentissage

Je suppose que tu aimes

Origine blog.csdn.net/feiying0canglang/article/details/128214181
conseillé
Classement