JSR-330其实是一种注入的标准了,详细参考http://www.jcp.org/en/jsr/detail?id=330
在spring 3.1中,可以使用@Inject,@Named 这两个注解去实现注入,其中
@Inject等于@Autowired ,@Named等于@component。结合各类资料,小结
如下:
1) 首先加入jar到pom.xml
2) 使用JSR-330
这是一个DAO,然后在service中,看下如何注入:
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中,可以使用@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都没对应的东西了