第二章 IoC Annotation注入
1、命名空間
使用Annotation的方式,需要在spring的配置文件中配置命名空間。命名空間中,隱式地注冊了多個對注解進行解析處理的處理器。
a、引入context命名空間
<beans
xmlns="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:p="https://www.springframework.org/schema/p"
xmlns:context="https://www.springframework.org/schema/context"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
https://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context-3.0.xsd">
b、打開注解功能
<context:annotation-config />
2、@Autowired與@Resource
@Autowired與@Resource在使用上是沒有任何區別的。即可以放於屬性聲明之前,也可以放於屬性的setter方法頭上。
隻是@Autowired注解是由Spring提供的,它是按類型進行裝配。而@Resource是由JavaEE提供的,它是按屬性的名字進行裝配,找不到名字後再找類型按類型裝配。
@Autowired是推薦使用的。
3、具體使用:
UserDao與UserDaoImpl:
- public interface UserDao {
- public void save();
- }
- public class UserDaoImpl implements UserDao {
- public void save() {
- System.out.println("保存用戶...");
- }
- }
UserService接口及其實現類UserServiceImpl:
- public interface UserService {
- public void addUser();
- }
在UserServiceImpl中使用注解把UserDao對象注入進來使用。
public class UserServiceImpl implements UserService {
//1
@Autowired private UserDao userDao;
public UserServiceImpl(UserDao userDao, String username) {
this.userDao = userDao;
this.username = username;
}
public void addUser() {
System.out.println(username);
userDao.save();
}
}
在上麵注釋1的地方還可以替換成以下幾種方式:
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Resource private UserDao userDao;
@Resource
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
配置文件:
<beans
xmlns="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:p="https://www.springframework.org/schema/p"
xmlns:context="https://www.springframework.org/schema/context"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
https://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 配置文件中,UserDaoImpl與UserServiceImpl是相互對立,沒有任何關係的。-->
<bean ></bean>
<bean ></bean>
<beans>
4、注意:
1、使用注解功能,必須是JDK5.0及以上版本。
2、一般來說,基本數據類型的屬性不使用Annotation的方式注入,Annotation隻用於Bean的裝配。而且,如果不是必須,基本數據類型的屬性一般不使用注入的方式。
最後更新:2017-04-03 16:48:30