代码之家  ›  专栏  ›  技术社区  ›  lisak

Java/Spring打印bean属性值

  •  4
  • lisak  · 技术社区  · 14 年前

    有人有打印bean属性值的简单方法吗?没有通过获取属性描述符等复杂的instrospection构造,我在讨论开发期间测试和检查所有属性是否都具有正确的值。

    5 回复  |  直到 10 年前
        1
  •  6
  •   Sean Patrick Floyd    14 年前

    PropertyDescriptor是一种方法,但是如果使用 BeanWrapper 接口。

    这是一个愚蠢的测试班:

    public class Thingy{
        private final String foo = "hey";
        private final int bar = 123;
        private final List<String> grr = Arrays.asList("1", "2", "3");
    
        public String getFoo(){
            return this.foo;
        }
        public int getBar(){
            return this.bar;
        }
        public List<String> getGrr(){
            return this.grr;
        }
    }
    

    下面是检查它的一个实例的主要方法:

    public static void main(final String[] args) throws Exception{
        final Thingy thingy = new Thingy();
        final BeanWrapper wrapper = new BeanWrapperImpl(thingy);
        for(final PropertyDescriptor descriptor : wrapper.getPropertyDescriptors()){
            System.out.println(descriptor.getName() + ":"
                + descriptor.getReadMethod().invoke(thingy));
        }
    }
    

    输出:

    bar:123
    class:class com.mypackage.Thingy
    foo:hey
    grr:[1, 2, 3]
    

    阅读本文件以供参考:

        3
  •  0
  •   Jaydeep Patel    14 年前

    BeanPostProcessor 也许能帮助你。将为每个bean初始化调用postprocessbeforeinitialization()方法,您可以在那里打印属性值。

    后处理器类:

    public class ExampleBeanPostProcessor implements BeanPostProcessor {
        public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
            if (bean instanceof YourBean)
                System.out.println((YourBean) bean).getSomeProp());
            return bean;
        }
        public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
            return bean;
        }
    }
    

    在bean文件中声明bean:

    <bean class="ExampleBeanPostProcessor " />
    
        4
  •  0
  •   Will    12 年前

    对于一个内衬,可以使用 gson 图书馆。

    new Gson().toJson(myObject)
    

    对于Maven:

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.1</version>
        <scope>test</scope> <!-- remove you use gson in production -->
    </dependency>
    
        5
  •  0
  •   user590444    10 年前

    添加自定义 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    在哪里?

     @Override
        protected String resolvePlaceholder(String placeholder, Properties props) 
    
    @Override
        protected String resolvePlaceholder(String placeholder, Properties props, int             systemPropertiesMode) 
    
        @Override
        protected String resolveSystemProperty(String key)