Service注解的value属性

  @service注解工作原理:在service层类上面添加@Service注解,会自动创建BeanBean的名字为类的名字首字母小写,也可以自己指定名字@Service(value="XXXX")

 对象属性注入:如果是使用类来创建对象,使用数据类型注入方式AutoWired属性注入就直接生成一个对象,因为一个类时唯一的。当使用接口创建对象时,使用@AutoWired它会去找该数据类型接口的实现类来创建对象。但是当该接口有多个实现类时,就需要加上通过名字进行注入属性,即Bean的名字,此时使用的就是@Service(value=”XXX”)里面的 XXX

定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public interface IService {
void base();
}


@Service("service1")
public class Service1 implements IService {
void base(){}
}

@Service("service2")
public class Service2 implements IService {
void base(){}
}

使用

1
2
3
4
5
6
7
8
9
10
11
12
// 使用方式一
@Autowired
private Map<String, IService> serviceMap;
serviceMap.get("service1").base()


// 使用方式二
@Autowired
@Qualifier("service1")
private Iservice service;
service.base();

补充:

(1)@Resource和@Autowired注解的区别

  • resource,是j2ee的注解,并不是spring原生的注解,默认是byName注入。但是可以通过byname或者byType两种属性来指定是通过name还是通过type来注入

  • autowired是spring的注解,默认是byType来注入,可以跟@Qualifier来指定name,从而以name的方式注入

(2)spring的bean有5中scope,单例、原型、request、session、global session。其中controller都是单例模式,而自定义的service都是原型,即每次声明都会get一个新的实例


Service注解的value属性
http://coder-xieshijie.cn/2023/01/06/Spring/Service注解的value属性/
作者
谢世杰
发布于
2023年1月6日
许可协议