Spring依赖注入:注解注入

Spring和注入相关的注解主要有Autowired\Resource\Qualifier\Service\Controller\Repository\Component。

Autowired是自动注入,自动从Spring的上下文找到合适的bean来注入。

Resource用来指定名称注入。

Qualifier和Autowired配合来使用,指定bean的名称。

Service,Controller,Repository分别来标记类是Service层类,Controller层类,数据存储层的类,Spring扫描注解配置时,会标记这些类要生成的bean。

Component是一种泛型,标记类是组件,Spring扫描注解配置时,会标记这些类要生成bean。

Autowired和Resource是用来修饰字段,构造函数,或者设置方法,并做注入的。而Service,Controller,Repository,Component则是来修饰类的,标记这些类要生成的bean。

例子:

新建一个Maven项目,并在pom中添加Spring相关的依赖。

然后新建CarDao类,给它添加@Repository注解,代码如下:

package cn.outofmemory.helloannotation;

import org.springframework.stereotype.Repository;

@Repository
public class CarDao{
    public void insertCar(String car){
        String insertMsg = String.format("inserting car %s",car);
        System.out.println(insertMsg);
    }
}
新建CarService类,并给该类标注@Service注解,在这个类中定义了CarDao的字段,并通过Autowired来修饰此字段,这样上面定义的CarDao类的实例就会自动的注入到CarService的实例中去的。

package cn.outofmemory.helloannotation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CarService{
    
    @Autowired
    private CarDao carDao;

    public void addCar(String car){
        this.carDao.insert(car);
    }
}
注意,Autowired注解有一个可以为空的属性required,可以用来指定字段是否是必须的,如果是必须的,则在找不到合适的实例注入时会抛出异常。

在App.java中使用上面的测试下注解注入:

package cn.outofmemory.helloannotation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App{
    public static void main(String[] args){
        ApplicationContext appContext = new AnnotationConfigApplicationContext("cn.outofmemory.helloannotation");
        CarService service = appContext.getBean(CarService.class);
        service.addCar("BMW");
    }
}
配置Spring文件,在Spring配置文件中也可以使用下面的配置让Spring自动扫描注解配置

<context:annotation-config/>
<context:component-scan base-package="cn.outofmemory.helloannotation">
</context:component-scan>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值