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

HTML asp 网站做网站的开发环境

HTML asp 网站,做网站的开发环境,2022没封的网站免费的,网站开发研究资料书籍问题 对于一些使用建造者模式的 Bean#xff0c;我们往往不能直接 new 出来#xff0c;这些 Bean 如果需要注册到 Spring 容器中#xff0c;我们就需要使用工厂类。 比如我们项目中经常使用的okhttp: 如果我们想把OkHttpClient注册到Spring容器中#xff0c;该怎么做? …问题 对于一些使用建造者模式的 Bean我们往往不能直接 new 出来这些 Bean 如果需要注册到 Spring 容器中我们就需要使用工厂类。 比如我们项目中经常使用的okhttp: 如果我们想把OkHttpClient注册到Spring容器中该怎么做? public class App {public static void main(String[] args) {//通过建造者模式去创建 OkHttpClient 对象OkHttpClient client new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build();//构建一个具体的请求Request getRequest new Request.Builder().get().url(https://www.baidu.com).build();Call call client.newCall(getRequest);CountDownLatch countDownLatch new CountDownLatch(1);//异步执行网络请求处理请求结果如果直接调用call.execute()就是同步会阻塞call.enqueue(new Callback() {Overridepublic void onFailure(NotNull Call call, NotNull IOException e) {countDownLatch.countDown();}// 这个就是请求成功的回调函数Overridepublic void onResponse(NotNull Call call, NotNull Response response) throws IOException {countDownLatch.countDown();System.out.println(response.body().string() response.body().string());}});//会判断计数器是否为 0如果为 0才会继续执行后续的代码否则就暂停在这里try {countDownLatch.await();} catch (InterruptedException e) {throw new RuntimeException(e);}} }又比如GSON: 这里的Gson对象也不是直接 new 出来的而是通过一个GsonBuilder对象建造出来的。 public class App {public static void main(String[] args) {User user new User();user.setName(hogen);user.setBirthday(new Date());Gson gson new GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss).create();String toJson gson.toJson(user);System.out.println(toJson); }解决方案 方法一 静态工厂 通过一个工厂方法将 Bean 构建好之后注入到 Spring 容器中需要注意的是这个工厂方法是一个静态方法 // 静态工厂顾名思义可以直接通过类名.方法名调用 public class OkHttpClientStaticFactory {private static OkHttpClient okHttpClient;static {okHttpClient new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build();}public static OkHttpClient getInstance() {return okHttpClient;} }然后在 XML 文件中配置静态工厂 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdbean classorg.example.OkHttpClientStaticFactory idokHttpClient factory-methodgetInstance/ /beansXML 中配置的时候需要注意虽然我们看起来向 Spring 容器中注册的是一个静态工厂类的对象但是实际上最终会调用对应的方法 factory-method向 Spring 容器中注册一个 OkHttpClient 对象而且该对象还是单例的。 public class App {public static void main(String[] args) {ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(beans.xml);OkHttpClient client1 ctx.getBean(okHttpClient, OkHttpClient.class);OkHttpClient client2 ctx.getBean(okHttpClient, OkHttpClient.class);System.out.println(client2 client2);System.out.println(client2 client1);} }输出 client2 okhttp3.OkHttpClient41fecb8b true方法一 实例工厂 此种情况工厂方法是一个实例方法(得先有对象再调用方法)。 public class OkHttpClientStaticFactory {private static OkHttpClient okHttpClient;static {okHttpClient new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build();}public static OkHttpClient getInstance() {return okHttpClient;} }然后在 XML 文件中进行配置 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdbean classorg.example.OkHttpClientInstanceFactory idokHttpClientInstanceFactory/bean classorg.example.OkHttpClientInstanceFactory factory-beanokHttpClientInstanceFactory factory-methodgetInstance idokHttpClient/ /beans那么需要注意的是实例工厂中工厂方法无法直接调用必须先有一个实例对象然后才能调用工厂方法。当然最终注册到 Spring 容器中的 Bean 也是单例的。 ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(beans.xml); OkHttpClient client1 ctx.getBean(okHttpClient, OkHttpClient.class); OkHttpClient client2 ctx.getBean(okHttpClient, OkHttpClient.class); System.out.println(client2 client2); System.out.println(client2 client1);方法一 FactoryBean推荐) 这种是开发中使用较多的一种方案。SqlSessionFactoryBean 、 ShiroFilterFactoryBean 。。。 首先我们需要创建一个 OkHttpClientFactoryBean /*** 注意这个命名是有规则的一般叫做 xxxFactoryBean看到这个名字就知道最终生成的 Bean 实际上是 xxx*/ public class OkHttpClientFactoryBean implements FactoryBeanOkHttpClient {/*** 返回具体的实例对象** return* throws Exception*/Overridepublic OkHttpClient getObject() throws Exception {return new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build();}/*** 返回的实例对象的类型** return*/Overridepublic Class? getObjectType() {return OkHttpClient.class;}/*** 是否是单例模式* 如果为 false就相当于 scope 为 prototype默认该值为 true** return*/Overridepublic boolean isSingleton() {return FactoryBean.super.isSingleton();} }然后在 XML 文件中进行配置 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdbean classorg.example.OkHttpClientFactoryBean idokHttpClient/ /beans当然最终获取到的还是okHttpClient对象 public class App {public static void main(String[] args) {ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(beans.xml);OkHttpClient okHttpClient ctx.getBean(okHttpClient, OkHttpClient.class);System.out.println(okHttpClient);} }输出 okhttp3.OkHttpClient693fe6c9那么如何获取到这个工厂 Bean 呢只需要 id 前面添加一个 符号就可以获取到 FactoryBean。 public class App {public static void main(String[] args) {ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(beans.xml);Object bean ctx.getBean(okHttpClient);System.out.println(bean.getClass());} }输出 class org.example.OkHttpClientFactoryBean
http://www.hkea.cn/news/14525093/

相关文章:

  • qt 网站开发楼盘信息在哪里能查到
  • 网络咨询网站建e网手机app
  • 宁夏做网站邹城市建设局网站
  • 做海报去哪个网站找素材比较好呢网站seo提升
  • 手机网站广告企业网站管理系统php源码
  • 网上骗人彩票网站是怎么做的低价虚拟主机
  • 北京建站公司推荐首推万维科技免费推广软件排行榜
  • 做网站申请域名空间急招程序员
  • 什么是企业营销网站有哪些做的好的小众网站
  • 调查问卷网站建设方案做网站有哪几种语言
  • 江西营销网站建设站内推广方式有哪些
  • 做网站产品资料表格网站托管服务提供商
  • 特效音网站wordpress主导航菜单
  • 为什么没人做同城购物网站网站开发保密协议范本
  • 从事网站开发学什么专业昆山网站建设秦皇岛
  • 网站怎么添加关键词网站域名在哪里买
  • 怎么做熊掌号网站响应式网站难做
  • wordpress调用代码高平网站优化公司
  • 企业做微网站wordpress eaccelerator
  • 上海哪家做网站龙华营销型网站建设
  • 网站怎么做优化wordpress产品介绍
  • 哔哩哔哩网站分析做网站本溪
  • wordpress获取4条文章标题优化方案历史
  • 国企网站建设会议纪要照明设计师培训
  • 网站文案怎么做国外企业画册设计网站
  • 德州做网站优化百度seo关键词排名优化软件
  • 建设厅八大员报名网站太原提高网站排名
  • 网站网络优化服务中端网站建设公司
  • 网站推广专员面试谷歌搜索引擎 google
  • 光华路网站建设做婚纱网站的步骤