spring 学习04

装配Bean

创建应用中对象之间协作关系的行为通常称为装配

Spring配置的可选方案

  1. 在XML中进行显示配置
  2. 在Java中进行显示配置
  3. 隐式bean发现机制和自动装配

自动化装配Bean

spring从两个角度来实现自动化装配:

  • 组件扫描
  • 自动装配

组件扫描和自动装配组合在一起就能发挥出强大的威力,它们能够将你的显式配置降低到最少

工程例子

mvn



    
        org.springframework
        spring-context
        5.0.2.RELEASE
    

    
        org.springframework
        spring-test
        5.0.2.RELEASE
    

    
        junit
        junit
        4.12
    


配置类

package com.demo.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created by jinxiong on 2018/9/9.
 */

// 不写包路径的话为 扫描的是 此类的包以及子包
@ComponentScan()
@Configuration
public class SpringConfig {
}

需要放置在Spring容器中的bean

package com.demo.bean;

import org.springframework.stereotype.Component;

/**
 * Created by jinxiong on 2018/9/9.
 */
@Component
public class Person {
    
    private String name;
    private String address;
}

测试类

package com.demo.test;

import com.demo.bean.Person;
import com.demo.config.SpringConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class Test01 {
    
    @Autowired
    private Person person;

    @Test
    public void test01(){
        System.out.println(person.toString());
    }

}

通过Java代码装配Bean

使用@Configuration注解,该注解表明这个类是一个配置类该类应该包含在Spring应用上下文创建bean的细节

@Configuration
public class BeanConfig {
    
    @Bean
    public Address address() {
        return new Address();
    }
}

通过XML装配bean


因为没有指定bean的Id,默认就是 com.demo.bean.User#0 其中#0是计数形式,用来区分此类型的其他bean,比如你再声明一个User类型的bean并且不指定id 那么它的id就是com.demo.bean.User#1

借助构造器注入初始化bean

构造器注入,有两种基本的配置方案可供选择

  • 元素
  • 使用spring 3.0 引入的c-命名空间

image

image

spring 学习04_第1张图片
image

设置属性

spring 学习04_第2张图片
image
spring 学习04_第3张图片
image
spring 学习04_第4张图片
image

你可能感兴趣的:(spring 学习04)