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

外贸网站价格表大学生怎么做网站支付模块

外贸网站价格表,大学生怎么做网站支付模块,制作网站的步骤有哪些,糗事百科网站 源码Aware 接口及 InitializingBean 接口 今天将会学到Aware 接口及 InitializingBean 接口 我们可以先了解他们的作用#xff1a; 1. Aware 接口用于注入一些与容器相关信息, 例如 a. BeanNameAware 注入 bean 的名字 b. BeanFactoryAware 注入…Aware 接口及 InitializingBean 接口 今天将会学到Aware 接口及 InitializingBean 接口 我们可以先了解他们的作用 1. Aware 接口用于注入一些与容器相关信息, 例如                 a. BeanNameAware 注入 bean 的名字                 b. BeanFactoryAware 注入 BeanFactory 容器                 c. ApplicationContextAware 注入 ApplicationContext 容器                 d. EmbeddedValueResolverAware ${} 2. InitializingBean 接口提供了一种【内置】的初始化手段 明白了作用我们可以写两个配置类来验证 配置类一我们用正常注解的方式注入bean以及实现bean的初始化方法 Configuration public class MyConfig1 {private static final Logger log LoggerFactory.getLogger(MyConfig1.class);Autowiredpublic void setApplicationContext(ApplicationContext applicationContext) {log.debug(Autowired注入 ApplicationContext);}PostConstructpublic void init() {log.debug(PostConstruct初始化);}Bean // beanFactory 后处理器public BeanFactoryPostProcessor processor1() {return beanFactory - {log.debug(执行 processor1);};}} 配置类二我们用实现上述两个接口的方法来实现注入bean以及实现bean的初始化方法  Configuration public class MyConfig2 implements InitializingBean, ApplicationContextAware {private static final Logger log LoggerFactory.getLogger(MyConfig2.class);Overridepublic void afterPropertiesSet() throws Exception {log.debug(初始化);}Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {log.debug(注入 ApplicationContext);}Bean // beanFactory 后处理器public BeanFactoryPostProcessor processor2() {return beanFactory - {log.debug(执行 processor2);};} } 创建启动类并将这两个配置类bean对象注入容器中观察结果 public class Spring06Application {public static void main(String[] args) {//创建一个干净的容器GenericApplicationContext context new GenericApplicationContext();//注入beancontext.registerBean(myConfig1, MyConfig1.class);context.registerBean(myConfig2, MyConfig2.class);//初始化容器context.refresh();for (String name : context.getBeanDefinitionNames()) {System.out.println(name);}//销毁容器context.close();} } 可以看到两个配置类的bean对象都成功注入容器当中但是只有实现接口的方法实现了bean对象的注入以及bean的初始化方法由于容器中缺少了解析bean的bean后处理器  我们往容器中添加bean后处理器解析注解 context.registerBean(AutowiredAnnotationBeanPostProcessor.class);context.registerBean(CommonAnnotationBeanPostProcessor.class); 此时可以看到利用注解的方式注入bean也成功实现bean的初始化方法也成功实现  总结实现Aware 接口及 InitializingBean 接口由于提供了内置的注入方法所以不需要依赖与bean的后处理器注解方式需要依赖与bean后处理器用 Autowired 就能实现啊, 为啥还要用 Aware 接口呢             简单地说:                 a. Autowired 的解析需要用到 bean 后处理器, 属于扩展功能                 b. 而 Aware 接口属于内置功能, 不加任何扩展, Spring 就能识别             某些情况下, 扩展功能会失效, 而内置功能不会失效 我们再容器中添加添加解析bean注解的后处理器把beanfactory后处理器注入容器中观察结果 public class Spring06Application {public static void main(String[] args) {//创建一个干净的容器GenericApplicationContext context new GenericApplicationContext();//注入bean // context.registerBean(myBean,MyBean.class);context.registerBean(myConfig1, MyConfig1.class);context.registerBean(myConfig2, MyConfig2.class);context.registerBean(AutowiredAnnotationBeanPostProcessor.class);context.registerBean(CommonAnnotationBeanPostProcessor.class);context.registerBean(ConfigurationClassPostProcessor.class);//初始化容器context.refresh();for (String name : context.getBeanDefinitionNames()) {System.out.println(name);}//销毁容器context.close();} } 可以看到用注解注入的bean以及初始化方法并没有被成功解析 对比 内置的注入和初始化不受扩展功能的影响总会被执行 而扩展功能受某些情况影响可能会失效 因此 Spring 框架内部的类常用内置注入和初始化 配置类 Autowired 失效分析 Java 配置类包含 BeanFactoryPostProcessor 的情况因此要创建其中的 BeanFactoryPostProcessor 必须提前创建 Java 配置类而此时的 BeanPostProcessor 还未准备好导致 Autowired 等注解失效   注意 解决方法 用内置依赖注入和初始化取代扩展依赖注入和初始化 用静态工厂方法代替实例工厂方法避免工厂对象提前被创建 初始化与销毁初始化销毁顺序 准备好类并实现初始化方法接口此时有注解方式实现初始化接口方式实现初始化bean注解方式指定初始化方法 public class Bean1 implements InitializingBean {private static final Logger log LoggerFactory.getLogger(Bean1.class);PostConstructpublic void init1() {log.debug(初始化1);}Overridepublic void afterPropertiesSet() throws Exception {log.debug(初始化2);}public void init3() {log.debug(初始化3);} } 创建类实现销毁方法接口 public class Bean2 implements DisposableBean {private static final Logger log LoggerFactory.getLogger(Bean2.class);PreDestroypublic void destroy1() {log.debug(销毁1);}Overridepublic void destroy() throws Exception {log.debug(销毁2);}public void destroy3() {log.debug(销毁3);} } Spring 提供了多种初始化手段除了课堂上讲的 PostConstructBean(initMethod) 之外还可以实现 InitializingBean 接口来进行初始化如果同一个 bean 用了以上手段声明了 3 个初始化方法那么它们的执行顺序是 PostConstruct 标注的初始化方法 InitializingBean 接口的初始化方法 Bean(initMethod) 指定的初始化方法 与初始化类似Spring 也提供了多种销毁手段执行顺序为 PreDestroy 标注的销毁方法 DisposableBean 接口的销毁方法 Bean(destroyMethod) 指定的销毁方法 扩展 1.aware接口执行在PostConstruct 标注的初始化方法InitializingBean 接口的初始化方法之间 2.执行destroySingletons()方法销毁之后,仍可创建新的单例
http://www.hkea.cn/news/14533744/

相关文章:

  • 网站开发语言优缺点中国建设银行官网站纪念币河南
  • 网站建设小程序南宁网站怎么做移动图片不显示
  • 法律咨询东莞网站建设网站维护服务费
  • 推广免费网站网站建设需要哪些人员
  • 给国外做网站无需下载国外黄冈网站推广
  • 程序员做外包网站专业外贸网站制作
  • 响应式网站开发实例制作小程序的软件免费
  • 济宁城乡建设局网站网页设计与制作课程设计报告小结
  • 天津做网站制作公司开发公司房价制定
  • 做微商有哪些网站可以免费宣传专业做公司宣传网站的
  • 网站需要怎么做的wordpress分享可见
  • 襄樊网站建设哪家好宁波网站建设设计服务公司
  • 企业网站的网页设计服装网站建设图
  • 江苏SEO网站建设网站界面需求
  • a5创业网站建设在哪里做马可波罗网站
  • 模版建站域名备案购买
  • 网站快速建设软件下载如何提高网站点击率怎么做
  • 阿里云空间可以做网站吗做一个静态网站多少钱
  • 多个域名解析到一个网站cae毕业设计代做网站
  • 网站怎么优化搜索网约车资格证
  • 17网站一起做 佛山暴雪退款申请快速入口
  • 网站推广seo设置基于android的app开发用什么软件
  • 万网网站域名多少钱一年行业网站建设价格
  • 网文封面制作网站公司培训课程有哪些
  • 阿胶在那种网站做推广好湛江的网站
  • 石家庄微网站建设公司美工做网站尺寸多少钱
  • 一个服务器下怎么做两个网站网站制作公司怎样帮客户做优化
  • 网站怎么做app网站300兆是多少钱
  • 做网站就要租服务器wordpress 文章id连续
  • 建设银行手机银行银行下载官方网站二维码网页制作免费网站制作