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去掉就行。但是