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

格瑞特网站建设做网站月薪资多少

格瑞特网站建设,做网站月薪资多少,电子商务网站开发书,网址大全软件下载安装一、自动装配说明 1.1概述 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean。 1.2装配机制 Spring中bean有三种装配机制#xff0c;分别是#xff1a; 在xml中显式配置#xff1b; 在java中显式配置#xff1b; 隐式…一、自动装配说明 1.1概述 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean。 1.2装配机制 Spring中bean有三种装配机制分别是 在xml中显式配置 在java中显式配置 隐式的bean发现机制和自动装配。 这里我们主要讲第三种自动化的装配bean。 Spring的自动装配需要从两个角度来实现或者说是两个操作 组件扫描(component scanning)spring会自动发现应用上下文中所创建的bean 自动装配(autowiring)spring自动满足bean之间的依赖也就是我们说的IoC/DI 组件扫描和自动装配组合发挥巨大威力使得显示的配置降低到最少。 1.3测试环境搭建 新建实体类 package com.yanyu.pojo;public class Cat {public void shout() {System.out.println(miao~);} }package com.yanyu.pojo;public class Dog {public void shout() {System.out.println(wang~);} }package com.yanyu.pojo;import lombok.Data;Data public class User {private Cat cat;private Dog dog;private String str; } 编写Spring配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdbean iddog classcom.yanyu.pojo.Dog/bean idcat classcom.yanyu.pojo.Cat/bean iduser classcom.yanyu.pojo.Userproperty namecat refcat/property namedog refdog/property namestr valueyanyu//bean /beans 测试 import com.yanyu.pojo.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {Testpublic void testMethodAutowire() {ApplicationContext context new ClassPathXmlApplicationContext(beans.xml);User user (User) context.getBean(user);user.getCat().shout();user.getDog().shout();} } 二、自动装配 2.1byName autowire byName (按名称自动装配) 由于在手动配置xml过程中常常发生字母缺漏和大小写等错误而无法对其进行检查使得开发效率降低。 采用自动装配将避免这些错误并且使配置简单化。 修改bean配置增加一个属性  autowirebyName bean iduser classcom.yanyu.pojo.User autowirebyNameproperty namestr valueyabyu//bean 再次测试结果依旧成功输出我们将 cat 的bean id修改为 catXXX再次测试 执行时报空指针java.lang.NullPointerException。因为按byName规则找不对应set方法真正的setCat就没执行对象就没有初始化所以调用时就会报空指针错误。 当一个bean节点带有 autowire byName的属性时。 将查找其类中所有的set方法名例如setCat获得将set去掉并且首字母小写的字符串即cat。 去spring容器中寻找是否有此字符串名称id的对象。 如果有就取出注入如果没有就报空指针异常。 2.2byType autowire byType (按类型自动装配) 使用autowire byType首先需要保证同一类型的对象在spring容器中唯一。如果不唯一会报不唯一的异常。 NoUniqueBeanDefinitionException 测试 1、将user的bean配置修改一下  autowirebyType 2、测试正常输出 3、在注册一个cat 的bean对象 bean iddog classcom.yanyu.pojo.Dog/ bean idcat classcom.yanyu.pojo.Cat/ bean idcat2 classcom.yanyu.pojo.Cat/bean iduser classcom.yanyu.pojo.User autowirebyTypeproperty namestr valueqinjiang/ /bean 4、测试报错NoUniqueBeanDefinitionException 5、删掉cat2将cat的bean名称改掉测试因为是按类型装配所以并不会报异常也不影响最后的结果。甚至将id属性去掉也不影响结果。 这就是按照类型自动装配 2.3使用注解 配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxsi: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.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsdbean iddog classcom.yanyu.pojo.Dog/bean idcat classcom.yanyu.pojo.Cat/bean iduser classcom.yanyu.pojo.User autowirebyTypeproperty namestr valueyabyu//bean /beans2、开启属性注解支持 context:annotation-config/ Autowired Autowired是按类型自动转配的不支持id匹配。 需要导入 spring-aop的包 直接在属性上使用也可以在set方式上使用! 使用Autowired我们可以不用编写Set方法了前提是你这个自动装配的属性在I0C (Spring) 容器中存在且符合名字byname! 测试 1、将User类中的set方法去掉使用Autowired注解 package com.yanyu.pojo;import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Data Component public class User {Autowiredprivate Cat cat;Autowiredprivate Dog dog;private String str; }2、此时配置文件内容 context:annotation-config/bean iddog classcom.yanyu.pojo.Dog/ bean idcat classcom.yanyu.pojo.Cat/ bean iduser classcom.yanyu.pojo.User/ 3、测试成功输出结果 Autowired(requiredfalse)  说明false对象可以为nulltrue对象必须存对象不能为null。 //如果允许对象为null设置required false,默认为true Autowired(required  false) private Cat cat; Qualifier Autowired是根据类型自动装配的加上Qualifier则可以根据byName的方式自动装配 Qualifier不能单独使用 测试实验步骤 1、配置文件修改内容保证类型存在对象。且名字不为类的默认名字 bean iddog1 classcom.yanyu.pojo.Dog/bean iddog2 classcom.yanyu.pojo.Dog/bean idcat1 classcom.yanyu.pojo.Cat/bean idcat2 classcom.yanyu.pojo.Cat/ 2、没有加Qualifier测试直接报错 3、在属性上添加Qualifier注解 Autowired Qualifier(value cat2) private Cat cat; Autowired Qualifier(value dog2) private Dog dog; 测试成功输出 Resource(jdk8取消注解) Resource如有指定的name属性先按该属性进行byName方式查找装配 其次再进行默认的byName方式进行装配 如果以上都不成功则按byType的方式自动装配。 都不成功则报异常。 三、Spring注解开发 3.1环境配置 ?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd !-- 指定要扫描的包--context:component-scan base-packagecom.yanyu.pojo/context:annotation-config/ /beans 3.2Bean的实现 我们之前都是使用 bean 的标签进行bean注入但是实际开发中我们一般都会使用注解 1、配置扫描哪些包下的注解 !--指定注解扫描包-- context:component-scan base-packagecom.yanyu.pojo/ 2、在指定包下编写类增加注解 Component(user) // 相当于配置文件中 bean iduser class当前注解的类/ public class User {public String name  烟雨; } 3、测试 Test public void test(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(beans.xml);User user  (User) applicationContext.getBean(user);System.out.println(user.name); } 3.3属性注入 使用注解注入属性 1、可以不用提供set方法直接在直接名上添加value(值) Component(user) // 相当于配置文件中 bean iduser class当前注解的类/ public class User {Value(烟雨)// 相当于配置文件中 property namename value烟雨/public String name; } 2、如果提供了set方法在set方法上添加value(值); Component(user) public class User {public String name;Value(烟雨)public void setName(String name) {this.name name;} } 3.4衍生注解 我们这些注解就是替代了在配置文件当中配置步骤而已更加的方便快捷 Component三个衍生注解 为了更好的进行分层Spring可以使用其它三个注解功能一样目前使用哪一个功能都一样。 Controllerweb层 Serviceservice层 Repositorydao层 写上这些注解就相当于将这个类交给Spring管理装配了 3.5自动装配注解 在Bean的自动装配已经讲过了可以回顾 作用域 scope singleton默认的Spring会采用单例模式创建这个对象。关闭工厂 所有的对象都会销毁。 prototype多例模式。关闭工厂 所有的对象不会销毁。内部的垃圾回收机制会回收 Controller(user) Scope(prototype) public class User {Value(yanyu)public String name; } 3.6小结 XML与注解比较 XML可以适用任何场景 结构清晰维护方便 注解不是自己提供的类使用不了开发简单方便 xml与注解整合开发 推荐最佳实践 xml管理Bean 注解完成属性注入 使用过程中 可以不用扫描扫描是为了类上的注解 context:annotation-config/   作用 进行注解驱动注册从而使注解生效 用于激活那些已经在spring容器里注册过的bean上面的注解也就是显示的向Spring注册 如果不扫描包就需要手动配置bean 如果不加注解驱动则注入的值为null 3.7基于Java类进行配置 JavaConfig 原来是 Spring 的一个子项目它通过 Java 类的方式提供 Bean 的定义信息在 Spring4 的版本 JavaConfig 已正式成为 Spring4 的核心功能 。 测试 1、编写一个实体类Dog package com.yanyu.pojo;import org.springframework.stereotype.Component;Component //将这个类标注为Spring的一个组件放到容器中 public class Dog {public String name dog; }2、新建一个config配置包编写一个MyConfig配置类 package com.yanyu.config;import com.yanyu.pojo.Dog; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration //代表这是一个配置类 public class MyConfig {Bean //通过方法注册一个bean这里的返回值就Bean的类型方法名就是bean的idpublic Dog dog(){return new Dog();}}3、测试 import com.yanyu.config.MyConfig; import com.yanyu.pojo.Dog;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {Testpublic void test2(){ApplicationContext applicationContext new AnnotationConfigApplicationContext(MyConfig.class);Dog dog (Dog) applicationContext.getBean(dog);System.out.println(dog.name);} } 导入其他配置如何做呢 1、我们再编写一个配置类 Configuration  //代表这是一个配置类 public class MyConfig2 { } 2、在之前的配置类中我们来选择导入这个配置类 Configuration Import(MyConfig2.class)  //导入合并其他配置类类似于配置文件中的 inculde 标签 public class MyConfig {Beanpublic Dog dog(){return new Dog();}} 关于这种Java类的配置方式我们在之后的SpringBoot 和 SpringCloud中还会大量看到我们需要知道这些注解的作用即可
http://www.w-s-a.com/news/861776/

相关文章:

  • 免费在线响应式网站自助建站网页设计与网站建设试卷
  • 四川省肿瘤医院搜索优化整站优化
  • 新钥匙建站深圳创业补贴政策2023
  • 建网站需要准备什么网站三个月没排名
  • 网站运营规划网站推广的手段
  • cvm可以做网站服务器吗网片围栏
  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站
  • 企业培训 电子商务网站建设 图片山东省住房和城乡建设厅网站主页
  • 做酒招代理的网站赣icp南昌网站建设
  • 怎样做网站內链大连市建设工程信息网官网
  • 网站软件免费下载安装泰安网站建设收费标准
  • 部署iis网站校园网站设计毕业设计
  • 网站快慢由什么决定塘沽手机网站建设
  • 苏州那家公司做网站比较好装修队做网站
  • 外贸网站推广中山网站流量团队
  • 网站前端设计培训做一份网站的步zou
  • 网站备案拍照茶叶网页设计素材
  • wordpress 手机商城模板关键词优化软件有哪些
  • 网站301做排名python做的网站如何部署
  • 昆山做企业网站工信部网站 备案
  • 做英文的小说网站有哪些网站做qq登录
  • 湖州建设局招投标网站深圳广告公司集中在哪里