spring-注解注入的bean和从上下文取出的bean不是同一个?

问题描述

注解注入的bean和从上下文取出的bean不是同一个?

有以下代码,最后比较注入的dao和ApplicationContext
上下文取出的dao,不是同一个。是我哪里有错误吗?
public class SpringApplicationContext implements ApplicationContextAware {

private static ApplicationContext applicationContext;

@Override
public void setApplicationContext(ApplicationContext context)
        throws BeansException {

    applicationContext = context;
}

public static Object getBean(String name) {
    return applicationContext.getBean(name);
}

public static ApplicationContext getApplicationContext(){
    return applicationContext;
}

}

 @Repository(value="helloDao")
public class HelloDao {

    public void save(){
        System.out.println("HelloDao.save");
    }

}

@Service("helloService")
public class HelloService {
@Resource(name = "helloDao")
private HelloDao dao;

public void say() {

    System.out.println(SpringApplicationContext.getBean("helloDao")==dao);//false

    System.out.println("say hello");
}

}

解决方案

对象比较不能用 == 需要用 equse ,==比的是对象名地址。 equse 比的才是引用。

解决方案二:

照这么看来应该是不一样的。但是,可以肯定的是所有用注解注入的同一类的属性都是同一个对象。

时间: 2024-08-29 14:38:54

spring-注解注入的bean和从上下文取出的bean不是同一个?的相关文章

使用Spring注解注入属性

1.1. 使用注解以前我们是怎样注入属性的 类的实现: public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件: < bean id="userManagerImpl" class="com.kedacom.spr

关于Spring 注解注入对象问题

问题描述 问题描述如下:A 类是一个WS入口,调用B类的业务. 然后在B类里面注入service ,注入的service为空.public class A{   private B b = new B();   public void test(){       b.method();}} public class B{    @Resource     private IEsbForEmpBusinessService esbForEmpBusinessService;     在这个类里面的

为什么spring注解注入失败?

问题描述 spring版本3.0.5@Componentpublic class IndexFacade {@Autowiredprivate UserService userService;其中 userService访问时是null注解扫描的包<!-- 扫描指定package下所有带有如@controller,@services,@resource,并把所注释的注册为Spring Beans --> <context:component-scan base-package="

spring-Spring注解注入配置文件的值

问题描述 Spring注解注入配置文件的值 我在service层想获取properties文件中的值,如果用spring注解的方式去获取需要把Service类也注解为Component么? 解决方案 在Spring之前 在一个对象中调用另外一个类,需要在其内部实例化这个类,这样的结果是一旦类的数目增加代码的耦合度将变的非常高.为了降低耦合度,我们引入了Spring,Spring可以通过注入来降低代码的耦合度.即把生成对象的控制权交给容器,代码要做的只是使用这些对象进行逻辑或者持久化操作,这就是控

spring注解-service利用注解注入,会空指针异常。而用getBean方式则可以获取到service。

问题描述 service利用注解注入,会空指针异常.而用getBean方式则可以获取到service. spring配置文件如下: <?xml version=""1.0"" encoding=""UTF-8""?> xmlns:context=""http://www.springframework.org/schema/context"" xmlns:xsi="

Spring 3.0 注解注入详解

原文地址: http://developer.51cto.com/art/201104/255395.htm 一.各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作.@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性.要使@Autowired能够工作,还需要在配置文件中加入以下 Xml代码 <bean class="org.sp

【求助】DWR如何使用spring注解管理的bean

问题描述 我在开发过程中,遇到这样一个问题:用户注册时输入邮箱,然后使用dwr进行校验.<createcreator="new"javascript="LoginCheckDwr"><paramname="class"value="cn.com.web.account.dwr.LoginCheckDwr"/></create>下面是这个dwr的代码publicclassLoginCheckD

Springmvc注解注入的简单demo

今天看了注解注入觉得确实简化了xml配置,一般情况下spring容器要成功启动的三大要件分别是:Bean定义信息,Bean实现类,以及spring本身.如果采取基于XML的配置,Bean信息和Bean实现类本身是分离的,而采用注解基于注解配置的方式,Bean定义信息通过在Bean实现类上标注注解实现,这种方式确实简化了xml配置,但是是不是某种程度增加了耦合? 常用的注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Com

spring注解实现业务层事务管理,当业务层自调用时,事务失效问题解决

前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的.因此专门写此篇帖子分析why. 1.预备知识 aop概念请参考[http://www.iteye.com/topic/1122401]和[http://jinnianshilongnian.iteye.com/blog/1418596] spring的事务管理,请参考[http://jinnianshilongnian.iteye.com/blog/1