1. 程式人生 > 實用技巧 >SpringIOC基於註解建立物件和注入屬性

SpringIOC基於註解建立物件和注入屬性

一、Spring針對Bean物件的建立提供了以下註解

  @Component

  @Controller

  @Service

  @Repository

  早期Spring對於建立Bean物件支援的註解只有@Conmpnent,但是這樣就會帶來一個麻煩,因為你的檢視層、業務層、以及持久化層都使用@Component來進行Bean物件的建立,這樣程式設計師很容易搞混亂,不能直接通過註解的名稱一眼就確定自己現在操作的具體是那一層的程式碼,為了解決上述問題Spring引入了@Controller、@Service、@Repository來區別不同的層,雖然上面四個註解都能實現物件的建立,但是為了避免麻煩,建議在不同的層上使用相對應的註解.

下面就來測試一下使用註解的方式來建立Bean物件

  測試步驟:

  1、建立一個配置類

// 標記該類是一個Spring配置類
@Configuration
// 開啟註解掃描,Spring會自動掃描com.spring01包及其子包下的所有註解
@ComponentScan({"com.spring01"})
public class SpringConfiguration {
}

  2、自定義一個介面UserDao

public interface UserDao {
    public abstract void call();
    public abstract String sendMessage();
}

  3、UserDaoImpl實現UserDao介面

// 使用@Repository將UserDaoImpl物件注入到IOC容器中,預設的id是將類名的首字母小寫,例如UserDaoImpl物件注入到IOC的id就是 userDaoImpl
// 也可以顯示的指定名稱,例如@Repository("xiaomaomao"),那麼UserDaoImpl注入到IOC容器中的id就是xiaomaomao
@Repository
public class UserDaoImpl implements UserDao{
    @Override
    public void call() {
        System.out.println("call somebody");
    }

    @Override
    public String sendMessage() {
        System.out.println("send message to somebody");
        return null;
    }
}

  4、測試

@Test
    public void testSpringAnnotation(){
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        UserDao userDao = context.getBean("userDaoImpl", UserDao.class);
        System.out.println(userDao);
    }

  5、測試結果(可以看到UserDaoImpl的物件由IOC容器創建出來了)

com.spring01.dao.UserDaoImpl@157632c9