美文网首页
Spring Beans的安装与依赖注入

Spring Beans的安装与依赖注入

作者: HeapOverflow | 来源:发表于2020-06-09 18:27 被阅读0次
    Bean与Spring容器之间的关系

    Spring IoC容器中,bean的连线可以通过以下三种方式完成:

    1. 完全基于xml配置文件:bean的安装和依赖的注入都是通过xml文件进行配置,如:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
       <bean id="john-classic" class="com.example.Man">
          <property name="name" value="John Doe"/>
          <property name="wife" ref="jane"/>
       </bean>
    
       <bean name="jane" class="com.example.Women">
          <property name="name" value="John Doe"/>
       </bean>
    
    </beans>
    

    2、xml文件与注解配合:与1的区别是,无需在bean安装时指定属性的赋值,只需要定义Class时,在属性上使用@Autowire注解,同时需要通过以下配置启用。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
       <context:annotation-config/>
       <!-- bean definitions go here -->
    
    </beans>
    

    Class定义:

    import org.springframework.beans.factory.annotation.Autowired;
    public class Man {
      @Autowired
      private Women wife;
    }
    
    1. 完全基于注解: @Configuration 和 @Bean 注解,不需要任何配置文件

    @Configuration注解应用于类,表示这个类可以使用Spring IoC容器作为bean定义的来源。
    @Bean注解应用于方法,告诉Spring这个方法返回的对象将作为bean注册在Spring容器(Spring应用上下文),方法名为bean id。

    package com.tutorialspoint;
    import org.springframework.context.annotation.*;
    @Configuration
    public class HelloWorldConfig {
       @Bean 
       public HelloWorld helloWorld(){
          return new HelloWorld();
       }
    }
    

    上面的代码将等同于下面的 XML 配置:

    <beans>
       <bean id="helloWorld" class="com.tutorialspoint.HelloWorld" />
    </beans>
    

    如需添加生命周期的回调方法,可同过注解的属性配置(默认即为单实例,可不指定作用域):

    public class Foo {
       public void init() {
          // initialization logic
       }
       public void cleanup() {
          // destruction logic
       }
    }
    
    @Configuration
    public class AppConfig {
       @Bean(initMethod = "init", destroyMethod = "cleanup" )
       @Scope("prototype")
       public Foo foo() {
          return new Foo();
       }
    }
    

    相关文章

      网友评论

          本文标题:Spring Beans的安装与依赖注入

          本文链接:https://www.haomeiwen.com/subject/zmsetktx.html