u011249435
season_java
采纳率50%
2016-10-25 07:07 阅读 3.0k
已采纳

为什么我的spring注解不管用?

public class TestDrive {
@Resource(name="emp")
Emp e ;
public static void main(String[] args) {
System.out.println(new TestDrive().e);
}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    w172087242 little_how 2016-10-25 07:16

    1.首先,运行时注解需要通过反射才能使用
    2.spring内部调用时封装了,所以注解能直接反应出来。

    你的问题在于:
    1.你的类没有配置spring的Component
    2.想要spring使用你配置的注解,你的bean就不能自己new,需要从spring的上下文获取代理bean才可以。

    希望能够帮到你....

    点赞 1 评论 复制链接分享
  • u011249435 season_java 2016-10-25 07:08

    xml里面的配置:
    /context:component-scan
    <!-- 开启注解 -->
    context:annotation-config/

    <bean id="emp" class="springdemo2.Emp">
        <property name="ename" value="jijie"/>
    </bean>
    
    点赞 评论 复制链接分享
  • u011249435 season_java 2016-10-25 07:09
    
    ``` <context:component-scan base-package="*"></context:component-scan>
        <!-- 开启注解 -->
        <context:annotation-config/>
    
        <bean id="emp" class="springdemo2.Emp">
            <property name="ename" value="jijie"/>
        </bean>
    
    
    
    
    
    
    点赞 评论 复制链接分享
  • u011249435 season_java 2016-10-25 07:31

    @Component
    public class TestDrive {
    @Resource(name="emp")
    Emp e ;

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println(((T)ac.getBean("t")).e   );
        System.out.println(new TestDrive().e);
    
    }
    

    }

    @Component(value="t")
    class T {
    @Resource(name="emp")
    Emp e ;
    }
    这么着可以了

    点赞 评论 复制链接分享

相关推荐