美文网首页
spring 学习04

spring 学习04

作者: 咸鱼佬 | 来源:发表于2018-09-10 22:59 被阅读8次

装配Bean

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

Spring配置的可选方案

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

自动化装配Bean

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

  • 组件扫描
  • 自动装配

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

工程例子

mvn

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

</dependencies>

配置类

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 class="com.demo.bean.User" />

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

借助构造器注入初始化bean

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

  • <constructor-arg> 元素
  • 使用spring 3.0 引入的c-命名空间
image
image
image

设置属性

image image image

相关文章

网友评论

      本文标题:spring 学习04

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