menu Error0 Blog
SpringBean装配
54 浏览 | 2019-11-05 | 分类:Spring | 标签:

自动扫描

组件扫描(component scanning):Spring会自动发现应用上下文 中所创建的bean。 自动装配(autowiring):Spring自动满足bean之间的依赖。

注解

@Component 创建可被发现的bean

@ContextConfiguration 扫描配置和Springxml的<context:component-scan> 一样效果

@ComponentScan 启用了组件扫描

@Autowired 自动装配Bean

代码清单

interface

public interface CompactDisc {
    void play();
}

SgtPeppers implements CompactDisc

@Component/*声明组件类*/
public class SgtPeppers implements CompactDisc {
    @Override
    public void play() {
        System.out.println("播放:愛にできることはまだあるかい");
    }
}

Test

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = main.class)/*扫描组件*/
@ComponentScan /*启用组件扫描*/
public class main {
    @Autowired
    private CompactDisc cd;
    @Test
    public void main()
    {
        cd.play();
    }
}

JavaConfig

方便第三方库加载,因为有时候别人的代码是不能修改所以也是需要手动装配Bean。
《Spring实战4》作者:[美] Craig Walls 沃尔斯 推荐的是自动化。

注解

@Configuration 声明spring配置类

@Bean spring会生成一个bean实例

代码清单

SgtPeppers

public class SgtPeppers implements CompactDisc {
    @Override
    public void play() {
        System.out.println("播放:愛にできることはまだあるかい");
    }
}

AppConfig

@Configuration
public class AppConfig {
    @Bean(name = "SgtPeppers")
    public SgtPeppers SgtPeppers()
    {
        return new SgtPeppers();
    }
}

Test

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = main.class)
public class main {
    @Test
    public void main() {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(AppConfig.class);
        ctx.refresh();
        SgtPeppers cd=(SgtPeppers) ctx.getBean("SgtPeppers");
        cd.play();
    }
}

XML配置Bean

在使用XML为Spring装配bean之前,需要创建一个新的配置规范。 在使用JavaConfig的时候,这意味着要创建一个带 有@Configuration注解的类,而在XML配置中,这意味着要创建 一个XML文件,并且要以<beans>元素为根。

<constructor-arg> 元素为构造器

<property> Setter方法所提供的功能

Spring 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.xsd">
        
</beans>

声明一个Bean

如果不配置id Spring 会帮生成 main.SgtPeppers#0 ,“#0”是一个计数的形 式,用来区分相同类型的其他bean

<bean id="SgtPeppers" class="main.SgtPeppers"></bean> 
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!

Emoji

Warning: file_get_contents(/assets/json/owo.json): failed to open stream: No such file or directory in /www/wwwroot/build/usr/themes/Cuckoo/includes/owo.php on line 46

Warning: array_keys() expects parameter 1 to be array, null given in /www/wwwroot/build/usr/themes/Cuckoo/includes/owo.php on line 48

Warning: file_get_contents(/assets/json/owo.json): failed to open stream: No such file or directory in /www/wwwroot/build/usr/themes/Cuckoo/includes/owo.php on line 87

Warning: array_keys() expects parameter 1 to be array, null given in /www/wwwroot/build/usr/themes/Cuckoo/includes/owo.php on line 89