package sping.analysis.aware;
import java.util.Locale;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
import org.springframework.util.StringValueResolver;
/**
* Spring 中 Bean 中可以自动注入哪些资源,通过实现 Aware 接口的方式实现的
*
* @author slHuang
* @since 2019-02-08
*/
@Component
public class MyBeanAwareByImpl implements ApplicationContextAware, EnvironmentAware, EmbeddedValueResolverAware,
ResourceLoaderAware, ApplicationEventPublisherAware, MessageSourceAware{
private ApplicationContext applicationContext;
private Environment environment;
private StringValueResolver resolver;
private ResourceLoader resourceLoader;
private ApplicationEventPublisher applicationEventPublisher;
private MessageSource messageSource;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public void useApplicationContext() {
System.out.println(this.applicationContext.containsBean("myBeanAwareByImpl"));
}
public void setEnvironment(Environment environment) {
this.environment = environment;
}
public void useEnvironment() {
System.out.println(this.environment.getProperty("java.home"));
}
public void setEmbeddedValueResolver(StringValueResolver resolver) {
this.resolver = resolver;
}
public void useResolver() {
System.out.println(this.resolver.resolveStringValue("${java.runtime.version}"));
}
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public void useResourceLoader() {
System.out.println(this.resourceLoader.getResource("classpath:src/main/resources/application.xml"));
}
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
public void useApplicationEventPublisher() {
System.out.println(this.applicationEventPublisher);
}
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
public void useMessageSource() {
System.out.println(this.messageSource.getMessage("Message", null, "not exist", Locale.JAPAN));
}
}
Spring 中 Bean 中通过实现 Aware 接口的方式可以自动注入哪些资源
最新推荐文章于 2024-08-03 16:54:39 发布