`
lorry1113
  • 浏览: 263247 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Bean基本管理

    博客分类:
  • java
阅读更多
一、使用setter方式完成依赖注入

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

public class HelloBean {  

    private String helloWord;  

    //...省略getter、setter方法     

}
 
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
    <bean id="helloBean"  
          class="onlyfun.caterpillar.HelloBean">  
        <property name="helloWord"> 
            <value>Hello!Justin!</value> 
        </property>  
    </bean>  
</beans>
 
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方法     
}
 
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
    <bean id="helloBean"  
          class="onlyfun.caterpillar.HelloBean">  
        <constructor-arg index="0"> 
            <value>Justin</value> 
        </constructor-arg>  
        <constructor-arg index="1"> 
            <value>Hello</value> 
        </constructor-arg>  
    </bean>  
</beans>
 
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方法     
}
 
<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
        <property name="date">  
            <ref bean="dateBean"/>  
        </property>  
    </bean>  
</beans>
 
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属性的按类型自动绑定。

<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="byType">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
    </bean>  
</beans>

五、“byName”自动绑定

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

<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="byName">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
    </bean>  
</beans>

六、“constructor”自动绑定

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

<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="constructor">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
    </bean>  
</beans>

六、“autodetect”自动绑定

将“三”中的配置文件改为下面,即可完成bean属性的自动绑定,这个自动绑定是Spring会尝试用入constructor来处理依赖关系的建立,如果不行,则再尝试用byType类建立依赖关系。
 
<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="autodetect">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
    </bean>  
</beans>


七、依赖检查方式

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

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

<beans>  
    <bean id="dateBean" class="java.util.Date"/>  
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean" autowire="autodetect" dependeny-check="all">  
        <property name="helloWord">  
            <value>Hello!</value>  
        </property>  
    </bean>  
</beans>

八、集合对象注入

对于像数组、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; 
    } 
}
 
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  

<beans> 
    <bean id="some1" class="onlyfun.caterpillar.Some"> 
        <property name="name"> 
            <value>Justin</value> 
        </property> 
    </bean> 
     
    <bean id="some2" class="onlyfun.caterpillar.Some"> 
        <property name="name"> 
            <value>momor</value> 
        </property> 
    </bean> 
     
    <bean id="someBean" class="onlyfun.caterpillar.SomeBean"> 
        <property name="someStrArray"> 
            <list> 
                <value>Hello</value> 
                <value>Welcome</value> 
            </list> 
        </property> 
         
        <property name="someObjArray"> 
            <list> 
                 <ref bean="some1"/> 
                 <ref bean="some2"/> 
            </list> 
        </property> 
         
        <property name="someList"> 
            <list> 
                 <value>ListTest</value> 
                 <ref bean="some1"/> 
                 <ref bean="some2"/> 
            </list> 
        </property> 
         
        <property name="someMap"> 
            <map> 
                 <entry key="MapTest"> 
                     <value>Hello!Justin!</value> 
                 </entry> 
                 <entry key="someKey1"> 
                     <ref bean="some1"/> 
                 </entry> 
            </map> 
        </property> 
    </bean>  
</beans>
 
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 < strs.length; i++) { 
            System.out.println(strs[i] + ","  
                    + somes[i].getName()); 
        } 

        // 取得List型态依赖注入对象 
        System.out.println(); 
        List someList = (List) someBean.getSomeList();  
        for(int i = 0; i < someList.size(); i++) { 
            System.out.println(someList.get(i)); 
        } 
         
        // 取得Map型态依赖注入对象 
        System.out.println(); 
        Map someMap = (Map) someBean.getSomeMap(); 
        System.out.println(someMap.get("MapTest")); 
        System.out.println(someMap.get("someKey1")); 
    }  
}
分享到:
评论

相关推荐

    Spring Bean基本管理实例详解

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

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    普元eos-springbean开发

    SpringBean是Spring框架的核心概念之一,它是Spring IoC容器管理的对象。在普元EOS平台中,SpringBean同样扮演着重要角色,用于封装业务逻辑、数据访问等功能。通过合理地设计和配置SpringBean,可以极大地提高开发...

    spring bean 属性总结

    在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`&lt;beans&gt;`、`&lt;bean&gt;`及其属性,以及其他相关的配置元素。 ...

    Spring的Bean配置

    - `BeanFactory`是最基本的容器,它实现了IoC的基本功能,如Bean的创建和管理。然而,它的功能相对较少,适合小型项目。 - `ApplicationContext`是更高级的容器,它不仅包含`BeanFactory`的所有功能,还添加了对...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    除了基本的`@Component`家族,Spring还提供了一些高级注解,如`@Scope`用于定义Bean的作用域,`@Lazy`用于延迟初始化Bean,`@Qualifier`用于在多个相同类型的Bean中指定特定的一个。 ### **总结** Spring的自动...

    Spring Bean 的生命周期

    - **生命周期管理方式**:Spring提供了多种管理Bean生命周期的方式,如`@PostConstruct`和`@PreDestroy`注解,以及`BeanPostProcessor`接口,它们都可以自定义Bean的初始化和销毁行为。 - **作用域的影响**:不同...

    Spring中与Bean相关的接口

    它是Spring中最基本的Bean容器,负责创建、配置和管理Bean。`BeanFactory`提供了一个延迟初始化Bean的能力,这意味着Bean只在真正被请求时才会被实例化,这有助于提高应用的启动速度。例如,当使用`XmlBeanFactory`...

    spring创建bean简单示例

    以上就是Spring创建Bean的基本步骤和相关知识点。通过这种方式,我们可以轻松地管理对象,解耦代码,提高程序的可维护性和可测试性。在实际项目中,Spring的Bean管理机制可以帮助我们构建出更加健壮和灵活的应用。

    深度解析spring容器管理bean

    DefaultListableBeanFactory是基础,提供了基本的bean管理和配置功能,而ApplicationContext则在其基础上增加了更多的企业级服务,如国际化、事件广播等。 在创建Bean的过程中,Spring会使用DOM4J解析XML配置文件,...

    详解Spring简单容器中的Bean基本加载过程

    Spring 简单容器中的 Bean 基本加载过程 Spring 框架是 Java 企业级应用程序的核心框架之一,它提供了一个 IOC(Inverse of Control,控制反转)容器,用于管理应用程序中的对象。Spring IOC 容器的核心是 ...

    谈谈我对Spring Bean 生命周期的理解

    本文将详细介绍 Spring Bean 生命周期的概念、生命周期图、生命周期阶段、生命周期管理方式等相关知识点。 一、 Spring Bean 生命周期概述 Spring Bean 生命周期是指 Spring 容器中 Bean 的创建、初始化、销毁等...

    Spring Bean 的生命周期.docx

    Spring Bean的生命周期是Spring框架管理Java对象(Bean)的核心机制,它涵盖了Bean从创建到销毁的整个过程。在这个过程中,Spring容器提供了多个关键接口和回调方法,使得开发者能够自定义Bean的行为。 首先,...

    SPRING:bean配置properties

    在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...

    Spring2.5视频教程_编码剖析Spring管理Bean的原理

    首先,讲解了Spring配置Bean的基本方式,这通常通过XML配置文件实现。在XML文件中,我们可以定义Bean的ID、类名、属性以及依赖关系。例如,`&lt;bean id="exampleBean" class="com.example.ExampleClass"&gt;`表示创建一个...

    Spring (bean怎样注入值)学习实例

    在Spring框架中,Bean的注入是其核心特性之一,它允许开发者通过声明式的方式管理对象的依赖关系。本文将深入探讨如何在Spring中通过XML配置文件对Bean进行值的注入,包括List、Set和Map等集合类型的注入。 首先,...

    Spring Bean的生命周期详细介绍

    Spring作为Java领域最广泛应用的轻量级框架,其管理Bean的方式对于优化应用程序的性能和可维护性至关重要。了解Bean的生命周期有助于我们在实际开发中更高效地利用Spring特性。 一、生命周期流程 Spring Bean的...

    spring入门教程之bean的继承与自动装配详解

    Spring作为一个依赖注入(DI)和面向切面编程(AOP)的容器,它管理Bean的生命周期并处理Bean之间的依赖关系。本文将深入探讨Spring Bean的继承与自动装配。 首先,让我们了解Bean的基本定义。在Spring配置文件中,...

    Spring的Bean配置说明

    - **功能概述**:`&lt;beans&gt;`是Spring配置文件的根元素,用来包含一个或多个`&lt;bean&gt;`元素,用于定义Spring容器管理的各种Bean。 #### 二、`&lt;bean&gt;`元素详解 - **基础配置**: - **`class`属性**:表示JavaBean的全...

    spring最基本jar

    这个名为“spring最基本jar”的压缩包很可能包含了Spring框架的基础组件,让我们来详细探讨一下Spring框架的相关知识点。 1. **IoC容器**:Spring的核心是IoC容器,它负责管理对象的生命周期和依赖关系。通过配置...

Global site tag (gtag.js) - Google Analytics