config
@ComponentScan("com.luban")
public class config {
@Bean
public User user(){
return new User();
}
}
user
public class User {
}
UserService
@Component
public class UserService implements InitializingBean {
private User user;
public UserService() {
System.out.println("构造方法");
}
@Autowired
public void setUser(User user) {
System.out.println("set方法注入");
this.user = user;
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("初始化");
}
}
LubanBeanPostProcessor
@Component
public class LubanBeanPostProcessor implements InstantiationAwareBeanPostProcessor {
@Override
public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
return null; }
@Override
public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
if (beanName.equals("userService")){
System.out.println("实例化后");
}
return true;
}
}
输出:
删掉LubanBeanPostProcessor
修改
@Override
public void afterPropertiesSet() throws Exception {
System.out.println(this);
System.out.println("初始化");
}
输出
我们可以在afterPropertiesSet中来对当前对象进行验证,比如判断时否属性都有值等等....
导入依赖
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
UserService添加方法
@PostConstruct
public void xxx(){
System.out.println("xxx");
}
输出结果
由此可知该方法为初始化前方法