通過用Aware介面使用Spring底層組件 能夠供我們使用的組件,都是Aware的子介面, ApplicationContextAware:實作步驟: (1)實作ApplicationContextAware; (2)重寫其中的方法,都包含一個物件,將該物件賦值到屬性中即可, 執行時間:在main函式中new IOC容器,先執行ApplicaitonContext實作類中的方法,通過該方法傳入IOC容器供我們自己使用,然后將該容器通過new 回傳給用戶, BeanNameAware:
@Component("myComponent")
public class MyComponent implements ApplicationContextAware,BeanNameAware{
private ApplicationContext applicationContext;
private String beanName;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("000000"+applicationContext);
this.applicationContext=applicationContext;
}
@Override
public void setBeanName(String name) {
System.out.println("當前bean的name"+name);
this.beanName=name;
}
}
環境切換 Spring:切換環境 @Profile 激活方式一: -Dspring.profiles.active=@Profile環境名

ApplicationContext context=new AnnotationConfigApplicationContext(MyConfig.class);
ConfigurableEnvironment environment= (ConfigurableEnvironment) context.getEnvironment();
environment.setActiveProfiles("myBanana");
原因:其中AnnotationConfigApplicationContext 有一個重繪refresh()操作,會將我們設定的一些引數還原,
流程調整:未激活——>激活 (重繪點:配置類的撰寫處)——>重繪
ApplicationContext context=new AnnotationConfigApplicationContext();
ConfigurableEnvironment environment= (ConfigurableEnvironment) context.getEnvironment();
environment.setActiveProfiles("myApple");
//保存點
((AnnotationConfigApplicationContext)context).register(MyConfig.class);
((AnnotationConfigApplicationContext) context).refresh();
IOC容器使用時必須進行重繪:有參構造,自動重繪;無參構造,手動重繪,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/155851.html
標籤:Java
