spring框架学习4:bean注解配置

在上一篇中学习了如何使用spring来管理对象,但是再实际的开发中,再spring配置文件中配置bean元素是非常繁琐的,因此实际开发中使用注解来配置spring。具体操作如下:

在配置文件中,扫描实体类包:

<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--扫描实体类包-->
    <context:component-scan base-package="com.zs.entity"/>

</beans>

使用注解配置对象,在类的头部使用注解@Component,

package com.zs.entity.impl;

import com.zs.entity.Cpu;
import com.zs.entity.Display;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
/**
 * 创建e470电脑,电脑有显示器和Cpu
 */

@Component
public class E470 {

    @Resource
    @Qualifier(value = "lgDisplay")
    private Display display;

    @Autowired
    private Cpu cpu;


    /*电脑有自己的工作的方法*/
    public void work(){
        display.show();
        cpu.calc();
    }
    /*生成get和set方法*/
    public Display getDisplay() {
        return display;
    }

    public void setDisplay(Display display) {
        this.display = display;
    }

    public Cpu getCpu() {
        return cpu;
    }

    public void setCpu(Cpu cpu) {
        this.cpu = cpu;
    }

}

引用对象类型头部也需要添加@Component,对象中的引用类型,当有多个实现类时,需要写出使用的实现类是哪儿一个,@Autowired是按照类型装配,@Resource默认按照名字装配,如果不成功,再按照类型装配,@Qualifier指定要装配对象的id,使用注解时,默认的对象的id为类名首字母小写。

然后测试:

import com.zs.entity.impl.E470;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    @Test
    public void test1() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("工厂类初始化成功");
        E470 e470 = (E470) context.getBean("e470");
        e470.work();
        
    }
}

 

posted @ 2019-06-17 15:18  Zs夏至  阅读(161)  评论(0编辑  收藏  举报