第二章 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