资讯专栏INFORMATION COLUMN

【译】注解@Inject 和@Named的例子

Michael_Lin / 3540人阅读

摘要:原文链接和注解示例本文介绍的两个注解,是的一部分。这些注解在使用上和的注解一样,所不同的只是需要额外的相关包。

原文链接

@Inject和@Named注解示例
本文介绍的两个注解,是JSR-330的一部分。在Spring 3中,开始支持JSR-330的注解。这些注解在使用上和Spring的注解一样,所不同的只是需要额外的相关jar包。你可以使用下面的注解在spring 3应用中。
- @Inject替代@Autowired来执行注入
- @Named替代@Component来声明一个Bean

让我们使用Eclipse来创建Spring应用:
- 1.创建一个项目:创建一个名为SpringAnnotationExamples的项目,创建一个包com.javabeat.injectandnamedannotations 
- 2.添加库:添加相关spring jar包
- 3.创建java文件:在包com.javabeat.injectandnamedannotations中创建Product ,ProductDao, ProductDaoImpl,ProductService和MainApp
- 4.创建配置文件:Beans.xml
代码文件
package com.javabeat.injectandnamedannotations;

 public class Product {
     String name;

     public Product(String name) {
         super();
         this.name = name;
     }

     public String getName() {
         return "Product name is:" + name;
     }

     public void setName(String name) {
         this.name = name;
     }
 }
package com.javabeat.injectandnamedannotations;

 public interface ProductDao {
     public Product getProduct(String id);
 }
package com.javabeat.injectandnamedannotations;

  import java.util.HashMap;
  import java.util.Map;

  import javax.inject.Named;

  import org.springframework.context.annotation.Scope;
  import org.springframework.stereotype.Repository;

  @Named
  public class ProductDaoImpl implements ProductDao {
      private Map products;

      public ProductDaoImpl() {
          products = new HashMap();
          products.put("P1", new Product("Product1"));
          products.put("P2", new Product("Product2"));
          products.put("P3", new Product("Product3"));

      }

      public Product getProduct(String id) {
          return products.get(id);
      }

  }
package com.javabeat.injectandnamedannotations;

  import javax.inject.Inject;
  import javax.inject.Named;

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

  @Named
  public class ProductService {
      @Inject
      private ProductDao productDao;

      public Product getProductDetail(String productId) {
          Product product = productDao.getProduct(productId);
          return product;
      }
  }

    

         

    
package com.javabeat.injectandnamedannotations;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] {"Beans.xml" });

        ProductService productService = (ProductService) context
                .getBean("productService");
        System.out.println(productService.getProductDetail("P1").getName());
        System.out.println(productService.getProductDetail("P2").getName());
        System.out.println(productService.getProductDetail("P3").getName());

    }
}
代码执行

执行MainApp在控制台得到如下输出:
Product name is:Product1
Product name is:Product2
Product name is:Product3

注意@Inject是没有required属性的

总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70291.html

相关文章

  • 使用Spring annotation编程快感

    摘要:创建应用对象之间协作关系的行为通常称为装配中有三种装配的方法在中显式配置在中显式配置隐式的发现机制和自动装配这儿要说的就是第三个自动发现与装配,它会带来编程的快感。 一、前言 Spring的Bean Factory所实现的IoC轻量级容器,可以很方便地让大家基于POJO开发JavaEE应用程序。 创建应用对象之间协作关系的行为通常称为装配 Spring中有三种装配Bean的方法 在X...

    BWrong 评论0 收藏0
  • 慕课网_《使用Google Guice实现依赖注入》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。慕课网教学源码学习源码第一章课程介绍课程简介是啥读音是轻量级的依赖注入框架说明一个的框架需要有基础什么是剥离注入轻量级代码少易维护性能优异,跟比较。 时间:2017年10月14日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com 教学源码:https://github.com/zccodere/s......

    2450184176 评论0 收藏0
  • 看起来很长但还是有用Spring学习笔记

    摘要:关于依赖注入注入的注解提供的注解不仅仅是对象,还有在构造器上,还能用在属性的方法上。与之相反,的限定符能够在所有可选的上进行缩小范围的操作,最终能够达到只有一个满足所规定的限制条件。注解是使用限定符的主要方式。 本文首发于泊浮目的专栏:https://segmentfault.com/blog... Spring致力于提供一种方法管理你的业务对象。在大量Java EE的应用中,随处可...

    DTeam 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<