InitializingBean afterPropertiesSet

 

Person[name=Jack,age=10]
style==null:Person@deb6432[name=Jack,age=10,password=Jack'sPassword]
SHORT_PREFIX_STYLE:Person[name=Jack,age=10,password=Jack'sPassword]
SIMPLE_STYLE:Jack,10,Jack'sPassword
MULTI_LINE_STYLE:Person@deb6432[
  name=Jack
  age=10
  password=Jack'sPassword
]
NO_FIELD_NAMES_STYLE:Person@deb6432[Jack,10,Jack'sPassword]

 

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.lang.reflect.Field;
import java.util.Objects;

public class StringUtilsDemo {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Jack");
        person.setPassword("Jack'sPassword");
        person.setAge((short) 10);
        System.out.println("" + person);
        System.out.println("style==null:" + ReflectionToStringBuilder.toString(person));
        System.out.println("SHORT_PREFIX_STYLE:" + ReflectionToStringBuilder.toString(person, ToStringStyle.SHORT_PREFIX_STYLE));//截去了包名
        System.out.println("SIMPLE_STYLE:" + ReflectionToStringBuilder.toString(person, ToStringStyle.SIMPLE_STYLE));
        System.out.println("MULTI_LINE_STYLE:" + ReflectionToStringBuilder.toString(person, ToStringStyle.MULTI_LINE_STYLE));
        System.out.println("NO_FIELD_NAMES_STYLE:" + ReflectionToStringBuilder.toString(person, ToStringStyle.NO_FIELD_NAMES_STYLE));

    }
}

class Person {
    private String name;
    private Short age;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Short getAge() {
        return age;
    }

    public void setAge(Short age) {
        this.age = age;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) {
            @Override
            protected boolean accept(Field field) {
                return super.accept(field) && !Objects.equals(field.getName(), "password");
            }
        }.toString();
    }

}

 

 

 

 

 

 

 

package org.test.InitializingBean;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 测试 spring的 InitializingBean 接口
 * @author Administrator
 *
 */
public class InitializingBeanTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

        ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml",
                InitializingBeanTest.class);
        ctx.start();

    }

}

 

package org.test.InitializingBean;

import org.springframework.beans.factory.InitializingBean;

/**
 * @see {@link org.springframework.beans.factory.InitializingBean#afterPropertiesSet}
 * @author Administrator
 *
 */
public class User implements InitializingBean {

    public User() {
        System.out.println(">>>>>>> User 默认的构造函数执行了");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println(">>>>>>> 执行了 afterPropertiesSet 方法");

    }

}

执行的结果如下图所示。可以看到当执行完User默认的构造函数之后,就会调用该类实现afterPropertiesSet方法

 

 

时间: 2024-08-04 04:35:25

InitializingBean afterPropertiesSet的相关文章

单点登录之CAS SSO从入门到精通(第三天)

开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 在CAS SSO登录界面增加我们自定义的登录用元素 使用LDAP带出登录用户在LDAP内存储的更多的信息 实现CAS SSO支持多租户登录的功能 好,开始正文! 正文 上次我们说到了CAS SSO的一些基本用法如:连数据库怎么用,连LDAP怎么用,这次我们要来讲一个网上几乎没有人去过多涉及到的一个问题即:在

写一个定时器Timer,随服务器一起启动

问题描述 1.搭建SSH框架环境2.写一个定时器Timer,随服务器一起启动.3.做一个前台页面,有两个按钮<开始>.<停止>能控制Timer.4.在前台页面再做一个文本框和一个提交按钮,在文本框里输入数字,点击提交能控制Timer的时间间隔.如:输入"1111",点击提交后,Timer的时间间隔就为1111毫秒.5.做一个类Count,这个类必须由spring管理,不能修改.Timer每执行一次就调用这个类的count()方法,要求输出Timer是第几次被调用

Bean的生命周期

原文:Bean的生命周期 1.实现各种生命周期控制访问的NewCar package com.beanprocess; import org.springframework.beans.BeansException; import org.springframework.beans.factory.*; /** * Created by gao on 16-3-18. */ public class NewCar implements BeanFactoryAware,BeanNameAware

Spring Bean的生命周期详细介绍_java

Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 一.生命周期流程图: Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关

InitializingBean,FactoryBean详解

Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean.工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象.创建出来的对象是否属于单例由isSingleton中的返回决定.使用场景:1.通过外部对类是否是单例进行控制,该类自己无法感知 2.对类的创建之前进行初始化的操作,在afterPropertiesSet()中完成. Spring初始化bean的时候,如果bean实现了

Spring-Bean的初始化(init方法和实现org.springframework.beans.factory.InitializingBean接口)

init()方法 在BEAN中增加一个方法inti(),用来完成初始化工作(去掉构造函数) 然后修改配置文档config.xml,指定Bean中要初始化的方法, 最后编写测试程序 Bean package com.gc.action; import java.util.Date; public class HelloWorld { private String msg=null;//该变量用来存储字符串 private Date date=null;//该变量用来存储日期 // public H

如何让继承InitializingBean的BEAN 只调用一次,请大家帮助

问题描述 我有一个类继承了InitializingBean.用来初始化,部署一些设置.现在的问题是被继承的类,总是被调用2次,在网上查了一下资料,说是要让此类为单例才会被只调用一次.<beanid="myService"class="test.MyService"singleton="true"></bean>所以我在被配置文件里面加入了singleton="true"这个设置不过还是没有成功.请大家帮

spring afterPropertiesSet执行修改sql无效

问题描述 springafterPropertiesSet执行查询语句是可以查询出结果的,但是不能执行更新语句.也不报错为什么啊???代码如下:@Service@Transactional@Component("targetUserJobSetService")publicclassTargetUserJobSetServiceImplimplementsInitializingBean{@Autowired@Qualifier("jdbcTemplate")pri

Spring实现动态数据源,支持动态添加、删除和设置权重及读写分离

当项目慢慢变大,访问量也慢慢变大的时候,就难免的要使用多个数据源和设置读写分离了. 在开题之前先说明下,因为项目多是使用Spring,因此以下说到某些操作可能会依赖于Spring. 在我经历过的项目中,见过比较多的读写分离处理方式,主要分为两步: 1.对于开发人员,要求serivce类的方法名必须遵守规范,读操作以query.get等开头,写操作以update.delete开头. 2.配置一个拦截器,依据方法名判断是读操作还是写操作,设置相应的数据源. 以上做法能实现最简单的读写分离,但相应的也