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

网站名称需要注册吗js获取网站域名

网站名称需要注册吗,js获取网站域名,网站和浏览器不兼容,长春建站推荐学习的最大理由是想摆脱平庸#xff0c;早一天就多一份人生的精彩#xff1b;迟一天就多一天平庸的困扰。各位小伙伴#xff0c;如果您#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持#xff0c;想组团高效学习… 想写博客但无从下手#xff0c;急需… 学习的最大理由是想摆脱平庸早一天就多一份人生的精彩迟一天就多一天平庸的困扰。各位小伙伴如果您 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持想组团高效学习… 想写博客但无从下手急需写作干货注入能量… 热爱写作愿意让自己成为更好的人… 文章目录 前言一、IoC容器1、控制反转IoC2、依赖注入3、IoC容器在Spring的实现 二、基于XML管理Bean1、搭建子模块spring6-ioc-xml2、实验一获取bean①方式一根据id获取②方式二根据类型获取③方式三根据id和类型④注意的地方⑤扩展知识 3、实验二依赖注入之setter注入4、实验三依赖注入之构造器注入5、实验四特殊值处理①字面量赋值②null值③xml实体④CDATA节 6、实验五为对象类型属性赋值方式一引用外部bean方式二内部bean方式三级联属性赋值 总结 前言 IoC 是 Inversion of Control 的简写译为“控制反转”它不是一门技术而是一种设计思想是一个重要的面向对象编程法则能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean它与使用关键字 new 创建的 Java 对象没有任何区别。 IoC 容器是 Spring 框架中最重要的核心组件之一它贯穿了 Spring 从诞生到成长的整个过程。 一、IoC容器 1、控制反转IoC 控制反转是一种思想。 控制反转是为了降低程序耦合度提高程序扩展力。 控制反转反转的是什么 将对象的创建权利交出去交给第三方容器负责。将对象和对象之间关系的维护权交出去交给第三方容器负责。 控制反转这种思想如何实现呢 DIDependency Injection依赖注入 2、依赖注入 DIDependency Injection依赖注入依赖注入实现了控制反转的思想。 依赖注入 指Spring创建对象的过程中将对象依赖属性通过配置进行注入 依赖注入常见的实现方式包括两种 第一种set注入第二种构造注入 所以结论是IOC 就是一种控制反转的思想 而 DI 是对IoC的一种具体实现。 Bean管理说的是Bean对象的创建以及Bean对象中属性的赋值或者叫做Bean对象之间关系的维护。 3、IoC容器在Spring的实现 Spring 的 IoC 容器就是 IoC思想的一个落地的产品实现。IoC容器中管理的组件也叫做 bean。在创建 bean 之前首先需要创建IoC 容器。Spring 提供了IoC 容器的两种实现方式 ①BeanFactory 这是 IoC 容器的基本实现是 Spring 内部使用的接口。面向 Spring 本身不提供给开发人员使用。 ②ApplicationContext BeanFactory 的子接口提供了更多高级特性。面向 Spring 的使用者几乎所有场合都使用 ApplicationContext 而不是底层的 BeanFactory。 ③ApplicationContext的主要实现类 类型名简介ClassPathXmlApplicationContext通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象FileSystemXmlApplicationContext通过文件系统路径读取 XML 格式的配置文件创建 IOC 容器对象ConfigurableApplicationContextApplicationContext 的子接口包含一些扩展方法 refresh() 和 close() 让 ApplicationContext 具有启动、关闭和刷新上下文的能力。WebApplicationContext专门为 Web 应用准备基于 Web 环境创建 IOC 容器对象并将对象引入存入 ServletContext 域中。 二、基于XML管理Bean 1、搭建子模块spring6-ioc-xml ①搭建模块 搭建方式如spring-first ②引入配置文件 引入spring-first模块配置文件beans.xml、log4j2.xml ③添加依赖 dependencies!--spring context依赖--!--当你引入Spring Context依赖之后表示将Spring的基础依赖引入了--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.3/version/dependency!--junit5测试--dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.3.1/version/dependency!--log4j2的依赖--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.19.0/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j2-impl/artifactIdversion2.19.0/version/dependency /dependencies④引入java类 引入spring-first模块java及test目录下实体类 package com.atguigu.spring6.bean;public class HelloWorld {public HelloWorld() {System.out.println(无参数构造方法执行);}public void sayHello(){System.out.println(helloworld);} } package com.atguigu.spring6.bean;import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class HelloWorldTest {private Logger logger LoggerFactory.getLogger(HelloWorldTest.class);Testpublic void testHelloWorld(){} }2、实验一获取bean ①方式一根据id获取 由于 id 属性指定了 bean 的唯一标识所以根据 bean 标签的 id 属性可以精确获取到一个组件对象。上个实验中我们使用的就是这种方式。 ②方式二根据类型获取 Test public void testHelloWorld1(){ApplicationContext ac new ClassPathXmlApplicationContext(beans.xml);HelloWorld bean ac.getBean(HelloWorld.class);bean.sayHello(); }③方式三根据id和类型 Test public void testHelloWorld2(){ApplicationContext ac new ClassPathXmlApplicationContext(beans.xml);HelloWorld bean ac.getBean(helloorld, HelloWorld.class);bean.sayHello(); }④注意的地方 当根据类型获取bean时要求IOC容器中指定类型的bean有且只能有一个 当IOC容器中一共配置了两个 bean idhelloworldOne classcom.gedeshidai.spring6.bean.HelloWorld/bean bean idhelloworldTwo classcom.gedeshidai.spring6.bean.HelloWorld/bean根据类型获取时会抛出异常 org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.atguigu.spring6.bean.HelloWorld’ available: expected single matching bean but found 2: helloworldOne,helloworldTwo ⑤扩展知识 如果组件类实现了接口根据接口类型可以获取 bean 吗 可以前提是bean唯一 如果一个接口有多个实现类这些实现类都配置了 bean根据接口类型可以获取 bean 吗 不行因为bean不唯一 结论 根据类型来获取bean时在满足bean唯一性的前提下其实只是看『对象 instanceof 指定的类型』的返回结果只要返回的是true就可以认定为和类型匹配能够获取到。 java中instanceof运算符用于判断前面的对象是否是后面的类或其子类、实现类的实例。如果是返回true否则返回false。也就是说用instanceof关键字做判断时 instanceof 操作符的左右操作必须有继承或实现关系 3、实验二依赖注入之setter注入 ①创建学生类Student package com.gedeshidai.spring6.bean;public class Student {private Integer id;private String name;private Integer age;private String sex;public Student() {}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}Overridepublic String toString() {return Student{ id id , name name \ , age age , sex sex \ };}}②配置bean时为属性赋值 spring-di.xml bean idstudentOne classcom.gedeshidai.spring6.bean.Student!-- property标签通过组件类的setXxx()方法给组件对象设置属性 --!-- name属性指定属性名这个属性名是getXxx()、setXxx()方法定义的和成员变量无关 --!-- value属性指定属性值 --property nameid value1001/propertyproperty namename value张三/propertyproperty nameage value23/propertyproperty namesex value男/property /bean③测试 Test public void testDIBySet(){ApplicationContext ac new ClassPathXmlApplicationContext(spring-di.xml);Student studentOne ac.getBean(studentOne, Student.class);System.out.println(studentOne); }4、实验三依赖注入之构造器注入 ①在Student类中添加有参构造 public Student(Integer id, String name, Integer age, String sex) {this.id id;this.name name;this.age age;this.sex sex; }②配置bean spring-di.xml bean idstudentTwo classcom.gedeshidai.spring6.bean.Studentconstructor-arg value1002/constructor-argconstructor-arg value李四/constructor-argconstructor-arg value33/constructor-argconstructor-arg value女/constructor-arg /bean注意 constructor-arg标签还有两个属性可以进一步描述构造器参数 index属性指定参数所在位置的索引从0开始name属性指定参数名 ③测试 Test public void testDIByConstructor(){ApplicationContext ac new ClassPathXmlApplicationContext(spring-di.xml);Student studentOne ac.getBean(studentTwo, Student.class);System.out.println(studentOne); }5、实验四特殊值处理 ①字面量赋值 什么是字面量 int a 10; 声明一个变量a初始化为10此时a就不代表字母a了而是作为一个变量的名字。当我们引用a的时候我们实际上拿到的值是10。 而如果a是带引号的‘a’那么它现在不是一个变量它就是代表a这个字母本身这就是字面量。所以字面量没有引申含义就是我们看到的这个数据本身。 !-- 使用value属性给bean的属性赋值时Spring会把value属性的值看做字面量 -- property namename value张三/②null值 property namenamenull / /property注意 property namename valuenull/property以上写法为name所赋的值是字符串null ③xml实体 !-- 小于号在XML文档中用来定义标签的开始不能随便使用 -- !-- 解决方案一使用XML实体来代替 -- property nameexpression valuea lt; b/④CDATA节 property nameexpression!-- 解决方案二使用CDATA节 --!-- CDATA中的C代表Character是文本、字符的含义CDATA就表示纯文本数据 --!-- XML解析器看到CDATA节就知道这里是纯文本就不会当作XML标签或属性来解析 --!-- 所以CDATA节中写什么符号都随意 --value![CDATA[a b]]/value /property6、实验五为对象类型属性赋值 ①创建班级类Clazz package com.gedeshidai.spring6.beanpublic class Clazz {private Integer clazzId;private String clazzName;public Integer getClazzId() {return clazzId;}public void setClazzId(Integer clazzId) {this.clazzId clazzId;}public String getClazzName() {return clazzName;}public void setClazzName(String clazzName) {this.clazzName clazzName;}Overridepublic String toString() {return Clazz{ clazzId clazzId , clazzName clazzName \ };}public Clazz() {}public Clazz(Integer clazzId, String clazzName) {this.clazzId clazzId;this.clazzName clazzName;} }②修改Student类 在Student类中添加以下代码 private Clazz clazz;public Clazz getClazz() {return clazz; }public void setClazz(Clazz clazz) {this.clazz clazz; }方式一引用外部bean 配置Clazz类型的bean bean idclazzOne classcom.atguigu.spring6.bean.Clazzproperty nameclazzId value1111/propertyproperty nameclazzName value财源滚滚班/property /bean为Student中的clazz属性赋值 bean idstudentFour classcom.gedeshidai.spring6.bean.Studentproperty nameid value1004/propertyproperty namename value赵六/propertyproperty nameage value26/propertyproperty namesex value女/property!-- ref属性引用IOC容器中某个bean的id将所对应的bean为属性赋值 --property nameclazz refclazzOne/property /bean错误演示 bean idstudentFour classcom.gedeshidai.spring6.bean.Studentproperty nameid value1004/propertyproperty namename value赵六/propertyproperty nameage value26/propertyproperty namesex value女/propertyproperty nameclazz valueclazzOne/property /bean如果错把ref属性写成了value属性会抛出异常 Caused by: java.lang.IllegalStateException: Cannot convert value of type ‘java.lang.String’ to required type ‘com.atguigu.spring6.bean.Clazz’ for property ‘clazz’: no matching editors or conversion strategy found 意思是不能把String类型转换成我们要的Clazz类型说明我们使用value属性时Spring只把这个属性看做一个普通的字符串不会认为这是一个bean的id更不会根据它去找到bean来赋值 方式二内部bean bean idstudentFour classcom.gedeshidai.spring6.bean.Studentproperty nameid value1004/propertyproperty namename value赵六/propertyproperty nameage value26/propertyproperty namesex value女/propertyproperty nameclazz!-- 在一个bean中再声明一个bean就是内部bean --!-- 内部bean只能用于给属性赋值不能在外部通过IOC容器获取因此可以省略id属性 --bean idclazzInner classcom.gedeshidai.spring6.bean.Clazzproperty nameclazzId value2222/propertyproperty nameclazzName value远大前程班/property/bean/property /bean方式三级联属性赋值 bean idstudentFour classcom.gedeshidai.spring6.bean.Studentproperty nameid value1004/propertyproperty namename value赵六/propertyproperty nameage value26/propertyproperty namesex value女/propertyproperty nameclazz refclazzOne/propertyproperty nameclazz.clazzId value3333/propertyproperty nameclazz.clazzName value最强王者班/property /bean总结 以上就是Spring之容器IOC1的相关知识点希望对你有所帮助。 积跬步以至千里积怠惰以至深渊。时代在这跟着你一起努力哦
http://www.hkea.cn/news/14402043/

相关文章:

  • 如何做自己的网站百度推广简单建优化网站无需技术
  • 酷站网站开发需要的工具
  • asp网站 攻击公司怎么开网站
  • iis网站ip律所网站建设方案书怎么写
  • 花生壳 建设网站设计电子商务网站
  • .net 网站地图优化大师官网下载
  • 网站漂浮物怎么做wordpress头像自定义
  • 网站建设的技术电子商务网站租用服务器费用
  • 网站上传程序流程wordpress减肥主题
  • html5手机网站源码下载苏州百度推广服务中心
  • 供求网站建设企业网站建设与管理简述
  • 个人营销网站网站建设常识
  • 免费dedecms企业网站模板微网站建设找哪家
  • dw网站建设基本流程小企业怎么建网站平台
  • 网站抽奖模板自己做的网站怎么放上网
  • 农业网站建设方案上海网站建设优化
  • wordpress调用网站最新文章wordpress 网站 上传
  • 建站行业都扁平化设计网站开发 工作量
  • 把手机网站做成app产品网站别人是如何做优化的
  • 建立一个做笔记的网站网站流量利用
  • 建设网站及域名费用wordpress qq空间
  • 大气的企业网站设计WordPress说说心情
  • 丽水市莲都建设分局网站东莞证券
  • m开头的手机网站怎么做营销平台是什么意思
  • 网站换域名要怎么做怎么在百度建设一个网站
  • 环保材料 技术支持 东莞网站建设上海专业建设网站制作
  • 外贸通道支持asp的网站吗wordpress进不后台
  • 网站服务器租用选择建设网站如
  • 网站留言短信通知虚拟主机部署网站
  • h5 网站开发流程图公司展示网站制作