热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

SpringBean基本管理实例详解

这篇文章主要介绍了SpringBean基本管理,以实例形式较为详细的分析了SpringBean的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Spring Bean基本管理。分享给大家供大家参考,具体如下:

一、使用setter方式完成依赖注入

下面是Bean和beans-config.xml文件。

public class HelloBean { 
  private String helloWord; 
  //...省略getter、setter方法   
}

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
 
   
     
      Hello!Justin! 
     
   
public class SpringDemo { 
  public static void main(String[] args) { 
    Resource rs = new FileSystemResource("beans-config.xml"); 
    BeanFactory factory = new XmlBeanFactory(rs); 
    HelloBean hello = (HelloBean) factory.getBean("helloBean"); 
    System.out.println(hello.getHelloWord()); 
  } 
}

二、使用constructor方式完成注入

public class HelloBean { 
  private String name; 
  private String helloWord; 
  // 建议有要无参数建构方法 
  public HelloBean() { 
  } 
  public HelloBean(String name, String helloWord) { 
    this.name = name; 
    this.helloWord = helloWord; 
  } 
  //...省略getter、setter方法   
}

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
 
   
     
      Justin 
     
     
      Hello 
     
   


public class SpringDemo { 
  public static void main(String[] args) { 
    ApplicationContext cOntext= 
      new FileSystemXmlApplicationContext("beans-config.xml"); 
    HelloBean hello = (HelloBean) context.getBean("helloBean"); 
    System.out.print("Name: "); 
    System.out.println(hello.getName()); 
    System.out.print("Word: "); 
    System.out.println(hello.getHelloWord()); 
  } 
}

三、属性参考

public class HelloBean { 
  private String helloWord; 
  private Date date; 
  //...省略getter、setter方法   
}

 
   
   
     
      Hello! 
     
     
       
     
   
public class SpringDemo { 
  public static void main(String[] args) { 
    ApplicationContext cOntext= 
      new FileSystemXmlApplicationContext("beans-config.xml"); 
    HelloBean hello = (HelloBean) context.getBean("helloBean"); 
    System.out.print(hello.getHelloWord()); 
    System.out.print(" It's "); 
    System.out.print(hello.getDate()); 
    System.out.println("."); 
  } 
}

四、“byType”自动绑定

将“三”中的配置文件改为下面,即可完成bean属性的按类型自动绑定。

 
   
   
     
      Hello! 
     
   


五、“byName”自动绑定

将“三”中的配置文件改为下面,即可完成bean属性的按名称自动绑定。

 
   
   
     
      Hello! 
     
   


六、“constructor”自动绑定

将“三”中的配置文件改为下面,即可完成bean属性的按构造方法自动绑定。在建立依赖关系时,Srping容器会试图比对容器中的Bean实例类型,及相关的构造方法上的参数类型,看看在类型上是否符合,如果有的话,则选用该构造方法来建立Bean实例。如果无法绑定,则抛出org.springframework.beans.factory.UnsatisfiedDependencyException异常。

 
   
   
     
      Hello! 
     
   


六、“autodetect”自动绑定

将“三”中的配置文件改为下面,即可完成bean属性的自动绑定,这个自动绑定是Spring会尝试用入constructor来处理依赖关系的建立,如果不行,则再尝试用byType类建立依赖关系。

 
   
   
     
      Hello! 
     
   


七、依赖检查方式

在自动绑定中,由于没办法从定义文件中,清楚地看到是否每个属性都完成设定,为了确定某些依赖关系确实建立,您可以假如依赖检查,在标签使用时设定"dependency-check",可以有四种依赖检查方式:simple、objects、all、none。

simple:只检查简单的类型(像原生数据类型或字符串对象)属性是否完成依赖关系,。
objects:检查对象类型的属性是否完成依赖关系。
all:则检查全部的属性是否完成依赖关系。
none:设定是默认值,表示不检查依赖性。

 
   
   
     
      Hello! 
     
   


八、集合对象注入

对于像数组、List、Set、Map等集合对象,在注入前必须填充一些对象至集合中,然后再将集合对象注入至所需的Bean时,也可以交由Spring的IoC容器来自动维护或生成集合对象,并完成依赖注入。

public class SomeBean { 
  private String[] someStrArray; 
  private Some[] someObjArray; 
  private List someList; 
  private Map someMap; 
  public String[] getSomeStrArray() { 
    return someStrArray; 
  } 
  public void setSomeStrArray(String[] someStrArray) { 
    this.someStrArray = someStrArray; 
  } 
  public Some[] getSomeObjArray() { 
    return someObjArray; 
  } 
  public void setSomeObjArray(Some[] someObjArray) { 
    this.someObjArray = someObjArray; 
  } 
  public List getSomeList() { 
    return someList; 
  } 
  public void setSomeList(List someList) { 
    this.someList = someList; 
  } 
  public Map getSomeMap() { 
    return someMap; 
  } 
  public void setSomeMap(Map someMap) { 
    this.someMap = someMap; 
  } 
}
public class Some { 
  private String name; 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public String toString() { 
    return name; 
  } 
}

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
 
   
     
      Justin 
     
   
   
     
      momor 
     
   
   
     
       
        Hello 
        Welcome 
       
     
     
       
          
          
       
     
     
       
         ListTest 
          
          
       
     
     
       
          
           Hello!Justin! 
          
          
            
          
       
     
   


public class SpringDemo { 
  public static void main(String[] args) { 
    ApplicationContext cOntext= 
      new FileSystemXmlApplicationContext( 
          "beans-config.xml"); 
    SomeBean someBean = 
      (SomeBean) context.getBean("someBean"); 
    // 取得数组型态依赖注入对象 
    String[] strs = 
      (String[]) someBean.getSomeStrArray(); 
    Some[] somes = 
      (Some[]) someBean.getSomeObjArray(); 
    for(int i = 0; i 

希望本文所述对大家Java程序设计有所帮助。


推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文讨论了B360主板是否可以安装win7系统的问题。由于B360主板不支持win7系统且缺乏官方驱动的支持,安装win7系统可能存在兼容性和稳定性问题。然而,通过借助USB3.0转接卡,B360主板仍然可以安装win7系统,但USB接口无法使用。相比之下,B365主板可以直接支持win7系统,并提供了相应的驱动,具有更好的稳定性和兼容性。选择合适的主板对于安装win7系统至关重要。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • docker增加restart=always, docker重启后自动启动容器的方法
    本文介绍了在运行docker容器时如何添加参数来保证每次docker服务重启后容器也自动重启的方法,以及如何使用命令来更新已启动的容器。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 处理docker容器时间和宿主机时间不一致问题的方法
    本文介绍了处理docker容器时间和宿主机时间不一致问题的方法,包括复制主机的localtime到容器、处理报错情况以及重启容器的步骤。通过这些方法,可以解决docker容器时间和宿主机时间不一致的问题。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文是关于自学Android的笔记,包括查看类的源码的方法,活动注册的必要性以及布局练习的重要性。通过学习本文,读者可以了解到在自学Android过程中的一些关键点和注意事项。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
author-avatar
狗子汪_322
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有