当前位置: 首页 > news >正文

租赁公司网站源码新媒体运营需要具备哪些能力

租赁公司网站源码,新媒体运营需要具备哪些能力,91游戏中心,网站建设seoppt文章目录 简介源码分析示例代码示例一#xff1a;扩展点的执行顺序运行示例一 示例二#xff1a;获取配置文件值配置文件application.properties内容定义工具类ConfigUtilcontroller测试调用运行示例二 示例三#xff1a;实现ResourceLoaderAware读取文件ExtendResourceLoad… 文章目录 简介源码分析示例代码示例一扩展点的执行顺序运行示例一 示例二获取配置文件值配置文件application.properties内容定义工具类ConfigUtilcontroller测试调用运行示例二 示例三实现ResourceLoaderAware读取文件ExtendResourceLoaderAware 文件内容token.json 文件controller测试代码运行示例三 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPostProcessor postProcessBeanDefinitionRegistry BeanDefinitionRegistryPostProcessor postProcessBeanFactory BeanFactoryPostProcessor postProcessBeanFactory instantiationAwareBeanPostProcessor postProcessBeforelnstantiation SmartlnstantiationAwareBeanPostProcessor determineCandidateConstructors MergedBeanDefinitionPostProcessor postProcessMergedBeanDefinition InstantiationAwareBeanPostProcessor postProcessAfterlnstantiation SmartInstantiationAwareBeanPostProcessor getEarlyBeanReference BeanNameAware setBeanName BeanFactoryAware postProcessPropertyValues ApplicationContextAwareProcessor invokeAwarelnterfaces InstantiationAwareBeanPostProcessor postProcessBeforelnstantiation PostConstructInitializingBean afterPropertiesSet FactoryBean getobject SmartlnitializingSingleton afterSingletonslnstantiated CommandLineRunner runDisposableBeandestroy 今天要介绍的是ApplicationContextAwareProcessor ApplicationContextAwareProcessor 本身是没有扩展点的但其内部却有7个扩展点可供实现 分别为 EnvironmentAwareEmbeddedValueResolverAwareResourceLoaderAwareApplicationEventPublisherAwareMessageSourceAwareApplicationStartupAwareApplicationContextAware 这些内部扩展点触发的时机在bean实例化之后初始化之前。 1、EnvironmentAware凡注册到Spring容器内的bean实现了EnvironmentAware接口重写setEnvironment方法后在工程启动时可以获得application.properties的配置文件配置的属性值。 2、EmbeddedValueResolverAware用于获取StringValueResolver的一个扩展类 StringValueResolver用于获取基于String类型的properties的变量 3、ResourceLoaderAware用于获取ResourceLoader的一个扩展类ResourceLoader可以用于获取classpath内所有的资源对象可以扩展此类来拿到ResourceLoader对象。 4、ApplicationEventPublisherAware用于获取ApplicationEventPublisher的一个扩展类ApplicationEventPublisher可以用来发布事件结合ApplicationListener来共同使用 5、MessageSourceAware用于获取MessageSource的一个扩展类MessageSource主要用来做国际化 6、ApplicationStartupAware要开始收集定制的StartupStep组件可以实现ApplicationStartupAware接口直接获得ApplicationStartup实例或者在注入点请求ApplicationStartup类型。 7、ApplicationContextAware可以用来获取ApplicationContext的一个扩展类也就是spring上下文管理器可以手动的获取任何在spring上下文注册的bean 源码分析 从下列源码的invokeAwareInterfaces方法可知ApplicationContextAwareProcessor关联了大部分Spring内置Aware接口,它们的执行顺序如 下源码码所示从上到下最开始是EnvironmentAware最后是ApplicationContextAware package org.springframework.context.support;class ApplicationContextAwareProcessor implements BeanPostProcessor {private final ConfigurableApplicationContext applicationContext;private final StringValueResolver embeddedValueResolver;/*** Create a new ApplicationContextAwareProcessor for the given context.*/public ApplicationContextAwareProcessor(ConfigurableApplicationContext applicationContext) {this.applicationContext applicationContext;this.embeddedValueResolver new EmbeddedValueResolver(applicationContext.getBeanFactory());}OverrideNullablepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (!(bean instanceof EnvironmentAware || bean instanceof EmbeddedValueResolverAware ||bean instanceof ResourceLoaderAware || bean instanceof ApplicationEventPublisherAware ||bean instanceof MessageSourceAware || bean instanceof ApplicationContextAware ||bean instanceof ApplicationStartupAware)) {return bean;}AccessControlContext acc null;if (System.getSecurityManager() ! null) {acc this.applicationContext.getBeanFactory().getAccessControlContext();}if (acc ! null) {AccessController.doPrivileged((PrivilegedActionObject) () - {invokeAwareInterfaces(bean);return null;}, acc);}else {invokeAwareInterfaces(bean);}return bean;}private void invokeAwareInterfaces(Object bean) {if (bean instanceof EnvironmentAware) {((EnvironmentAware) bean).setEnvironment(this.applicationContext.getEnvironment());}if (bean instanceof EmbeddedValueResolverAware) {((EmbeddedValueResolverAware) bean).setEmbeddedValueResolver(this.embeddedValueResolver);}if (bean instanceof ResourceLoaderAware) {((ResourceLoaderAware) bean).setResourceLoader(this.applicationContext);}if (bean instanceof ApplicationEventPublisherAware) {((ApplicationEventPublisherAware) bean).setApplicationEventPublisher(this.applicationContext);}if (bean instanceof MessageSourceAware) {((MessageSourceAware) bean).setMessageSource(this.applicationContext);}if (bean instanceof ApplicationStartupAware) {((ApplicationStartupAware) bean).setApplicationStartup(this.applicationContext.getApplicationStartup());}if (bean instanceof ApplicationContextAware) {((ApplicationContextAware) bean).setApplicationContext(this.applicationContext);}} }示例代码 示例一扩展点的执行顺序 示例一展示的是7个内部扩展点所执行的顺序 Slf4j Configuration public class ExtendInvokeAware implements EnvironmentAware, EmbeddedValueResolverAware, ResourceLoaderAware,ApplicationEventPublisherAware, MessageSourceAware, ApplicationStartupAware, ApplicationContextAware, BeanNameAware {Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {log.info(setApplicationContext--Extend--run {},applicationContext);}Overridepublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {log.info(setApplicationEventPublisher--Extend--run {},applicationEventPublisher);}Overridepublic void setApplicationStartup(ApplicationStartup applicationStartup) {log.info(setApplicationStartup--Extend--run {},applicationStartup);}Overridepublic void setEmbeddedValueResolver(StringValueResolver resolver) {log.info(setEmbeddedValueResolver--Extend--run {},resolver);}Overridepublic void setEnvironment(Environment environment) {log.info(setEnvironment--Extend--run {},environment);}Overridepublic void setMessageSource(MessageSource messageSource) {log.info(setMessageSource--Extend--run {},messageSource);}Overridepublic void setResourceLoader(ResourceLoader resourceLoader) {log.info(setResourceLoader--Extend--run {},resourceLoader);}Overridepublic void setBeanName(String name) {log.info(setBeanName--Extend--run {},name);} }运行示例一 示例二获取配置文件值 展示如何利用实现EmbeddedValueResolverAware来获取配置文件的属性值 配置文件application.properties内容 db.usernavicat db.passwordnavicat db.driverClasscom.mysql.jdbc.Driver定义工具类ConfigUtil 该工具类功能为传入的key获取对应value Component public class ConfigUtil implements EmbeddedValueResolverAware {private StringValueResolver resolver;Overridepublic void setEmbeddedValueResolver(StringValueResolver resolver) {this.resolver resolver;}/*** 获取属性直接传入属性名称即可* param key* return*/public String getPropertiesValue(String key) {StringBuilder name new StringBuilder(${).append(key).append(});return resolver.resolveStringValue(name.toString());}}controller测试调用 GetMapping(/testConfig) public void testConfig() {String s configUtil.getPropertiesValue(db.user);System.out.println(s); }运行示例二 示例三实现ResourceLoaderAware读取文件 ExtendResourceLoaderAware 文件内容 实现ResourceLoaderAware 接口并读取文件内容进行打印 Slf4j Configuration public class ExtendResourceLoaderAware implements ResourceLoaderAware {private ResourceLoader resourceLoader;Overridepublic void setResourceLoader(ResourceLoader resourceLoader) {this.resourceLoader resourceLoader;log.info(ApplicationContextAware--Extend--run {},resourceLoader);}public void showResourceData() throws IOException{//This line will be changed for all versions of other examplesResource banner resourceLoader.getResource(file:d:/token.json);InputStream in banner.getInputStream();BufferedReader reader new BufferedReader(new InputStreamReader(in));while (true) {String line reader.readLine();if (line null)break;System.out.println(line);}reader.close();} }token.json 文件 {name:张三}controller测试代码 Autowired ApplicationContext context;SuppressWarnings(resource) GetMapping(/testResource) public void testResource() throws Exception{ExtendResourceLoaderAware extendResourceLoaderAware (ExtendResourceLoaderAware) context.getBean(extendResourceLoaderAware);extendResourceLoaderAware.showResourceData(); }运行示例三
http://www.tj-hxxt.cn/news/233425.html

相关文章:

  • 在常州 做兼职上什么网站模板网站 怎么做优化
  • 为什么用asp做网站网站制作排版注意事项
  • 帮忙做ppt赚钱的网站辽阳银梦网站建设
  • 山西企业模板建站服务营销
  • 中国城乡与住房建设部网站装修设计图网站排名
  • 城市分站cmswordpress加速之gzip
  • php做小公司网站用什么框架厦门建设局网站
  • 宁波seo推广推荐公司aso优化技术
  • 长春建站怎么做cf小号自助购买网站
  • 网站整体地图怎么做做网站是否用数据库
  • 网站建设课设总结自助建网站哪个便宜
  • h5模板网站免费有哪些做兼职的设计网站有哪些
  • 深圳网站设计兴田德润简介wordpress需要备案
  • dede网站搬家更换空间重新安装普通话考试最后一题万能模板
  • 2014 网站建设wordpress加文字水印
  • 遂宁网站建设跨境o2o网站建设方案
  • 国外公司建站系统wordpress mylife
  • 网站充值功能怎么做在线考试系统网站开发
  • 拼多多网站建设框架图可以做外贸私单的网站
  • 网站推广无锡番禺网站建设番禺网络营销
  • 济南章丘网站建设响应式网站布局
  • 电子商务网站设计心得一单一结手机兼职
  • 普陀区网站建设前端wordpress文章编辑器可视化
  • 广州h5网站开发wordpress联系我们无法发邮件
  • 中山网站模板南京logo设计公司
  • 免费注册二级域名的网站自己服务器建网站
  • 南阳微网站建设跨境电商免费开店的有哪些
  • 龙岗网站-建设深圳信科手机网站的网址是什么原因
  • 手机网站广告代码深圳公共资源交易中心
  • 网站开发开题报告关键问题云系统网站建设合同