Spring框架学习之Annotation注解

spring要使用annotation得在beans.xml里添加
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd

<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
               
     <context:annotation-config/>
     
</beans>

在myeclipse要怎么样才能提示context:
window-preferences-xmlcatalog-add-filesystem
在spring包里dist-resources找到spring-context-2.5.xsd加进去。
通常会自动生成key,但是得把spring-context-2.5.xsd加到key里面去,才会真正给你提示。有的不用。这样beans.xml就会自动提示context了。

@Autowired注解,一般写在set方法上,自动帮你找一个和这个参数类型对应的一个bean。假如你要在userService这个bean里注入u这个bean,不用在xml配置文件里写property属性直接在set方法那里写注解如:但是要在xml里写 <context:annotation-config/>,

@Autowired
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
<bean id="u" class="com.ljs.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.ljs.service.UserService">

对了这个注解是按照类型来匹配的。如果有两个同类型的bean呢如:

@Autowired
    public void setUserDao(@Qualifier("u") UserDao userDao) {
        this.userDao = userDao;
    }
<bean id="u" class="com.ljs.dao.impl.UserDaoImpl"/>
<bean id="u1" class="com.ljs.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.ljs.service.UserService">

如果想要myeclipse自动提示注解可以这样做:
window-preferences-general-editor-context-assist
把最下面的@#里的@写到上面变成.@就行了。

接下来是比较重要的@Resource注解,因为这是je22定义的标准,所以我得导入je22的
包common-annotations.jar,然后在set方法上用@Resource
意思是我在这里引用一个资源,什么资源呢,这个资源的名字应该跟set方法名一样的bean资源或者其他资源。默认注入的方式是byType。如:

        <bean id="userDao1" class="com.ljs.dao.impl.UserDaoImpl" />
    <bean id="userDao2" class="com.ljs.dao.impl.UserDaoImpl" />
    <bean id="userService" class="com.ljs.service.UserService" />
@Resource
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

因为是默认是byType所以这样会报错,得把userDao1或者userDao2去掉就行。但是

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容