packagecom.harrison.pojo;importorg.springframework.stereotype.Component;//使用这种方式需要替换无参构造的方法,因为spring是调用无参构造方法创建类的@ComponentpublicclassUser{privateStringname;privateIntegerage;publicUser(){}publicUser(Stringname,Integerage){this.name=name;this.age=age;}// Getter and Setter methods}
/**
* {@link ImportBeanDefinitionRegistrar} to register the
* {@link DataSourceInitializedPublisher} without causing early bean instantiation
* issues.
*/staticclassRegistrarimplementsImportBeanDefinitionRegistrar{privatestaticfinalStringBEAN_NAME="dataSourceInitializedPublisher";/**
* AnnotationMetadata:当前类的注解信息
* BeanDefinitionRegistry:BeanDefinition注册类;
* 把所有需要添加到容器中的bean;调用
* BeanDefinitionRegistry.registerBeanDefinition手工注册进来
*/@OverridepublicvoidregisterBeanDefinitions(AnnotationMetadataimportingClassMetadata,BeanDefinitionRegistryregistry){if(!registry.containsBeanDefinition(BEAN_NAME)){GenericBeanDefinitionbeanDefinition=newGenericBeanDefinition();beanDefinition.setBeanClass(DataSourceInitializedPublisher.class);beanDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);// We don't need this one to be post processed otherwise it can cause a// cascade of bean instantiation that we would rather avoid.beanDefinition.setSynthetic(true);registry.registerBeanDefinition(BEAN_NAME,beanDefinition);}}}