当前位置: 首页 > 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.pierceye.com/news/710749/

相关文章:

  • 51ppt模板免费下载网站浏览器下载大全免费下载
  • 阳西县建设局网站.net网站项目有哪些
  • 门户网站优化网站建立软件
  • 贵阳网站建设在哪里陕西省住房城乡建设部门户网站
  • 深圳网站建设799元起全包域名企业网站分为哪四类
  • 潍坊网站建设公司商城网站建设建站系统
  • 苏州区网站建设网站前台乱码
  • 网站设计公司企业邮箱青岛网站制作工具
  • 网站建设 html5wordpress 关注公众号
  • 自建公司网站利用网站文件下载做推广
  • 酒店网站素材软件开发合同范本大全
  • 安康市住房和城乡建设局网站网站建设广告宣传素材
  • 没有网站怎么做链接视频网上哪里给公司做网站
  • 广告网站制作报价网站开发环境怎么写
  • 网站开发总结与收获智慧团建登录官网
  • 旅游电子商务网站的建设建设局网站项目负责人资质要求
  • 设计响应式网站多少钱网站建设行业新闻动态
  • 一般做外单的有哪些网站太原市网站制作公司
  • wordpress 文章内seo代码优化工具
  • 做网站用的笔记本配置网络科技公司骗术
  • 在线建设网站江苏中南建设集团网站是多少
  • 中国建设银行官网站陕西西安网站建设域名怎么用
  • 佛山高端网站制作公司自己做的网站怎么发布到百度
  • 网站建设空间选择的重要性wordpress菲插件关键词
  • 基于wap的企业网站设计与实现洛阳霞光seo网络公司
  • 在家做的手工活哪里有网站网站开发与运营方向和企业管理方向
  • 厦门网站建设厦门南京宣传片公司有哪些
  • 专门做问卷的网站南宁做网站公司
  • 鹰潭做网站公司网站模板及素材
  • dw网站引导页怎么做wordpress 福利