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的支持的主要内容,如果未能解决你的问题,请参考以下文章

spring注解支持

JSR-330 JAVA 依赖注入标准API说明

spring注解

SpringBoot启动提示JSR-330 javax.inject.Inject

spring 常用注解

深入理解Spring中的各种注解