spring 3.1中对JSR-330的支持
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 3.1中对JSR-330的支持相关的知识,希望对你有一定的参考价值。
JSR-330其实是一种注入的标准了,详细参考http://www.jcp.org/en/jsr/detail?id=330
在spring 3.1中,可以使用@Inject,@Named 这两个注解去实现注入,其中
@Inject等于@Autowired ,@Named等于@component。结合各类资料,小结
如下:
1) 首先加入jar到pom.xml
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
2) 使用JSR-330
import javax.inject.Named;
@Named
public class CustomerDAO
public void save()
System.out.println("CustomerDAO save method...");
这是一个DAO,然后在service中,看下如何注入:
@Named
public class CustomerService
@Inject
CustomerDAO customerDAO;
public void save()
System.out.println("CustomerService save method...");
customerDAO.save();
3 spring注解和jsr-330都是要配置下
<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-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.mkyong.customer" />
</beans>
4 jsr-330的限制
@Inject 没有@required属性去确保成功注入
在spring 中,默认@inject的scope是singleon的,当然可以用@scope去另外改
对于@Value, @Required @Lazy,JSR-330都没对应的东西了
以上是关于spring 3.1中对JSR-330的支持的主要内容,如果未能解决你的问题,请参考以下文章