1. 程式人生 > 實用技巧 >Spring-IoC-DI-基於註解方式的依賴注入-(案例二:基於註解方式實現屬性注入)

Spring-IoC-DI-基於註解方式的依賴注入-(案例二:基於註解方式實現屬性注入)

1.@AutoWired

根據屬性型別進行自動裝配

2.@Qualifier

根據屬性名稱進行注入

3.@Resource

可以根據型別注入也可以根據名稱注入

4.@Value

注入普通型別屬性


示例

第一步:把service和dao物件建立,在service和dao類新增建立物件的註解

第二步:在service注入dao物件,在service類新增dao型別屬性,在屬性上面使用註解

(1)建立物件

package com.orzjiangxiaoyu.spring.test1;

/**
 * @author orz
 * @create 2020-08-16 20:55
 */
public interface
UserDao { public void add(); }
package com.orzjiangxiaoyu.spring.test1;

import org.springframework.stereotype.Repository;

/**
 * @author orz
 * @create 2020-08-16 20:55
 */
@Repository
public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println(
"dao add"); } }

package com.orzjiangxiaoyu.spring.test1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
* @author orz
* @create 2020-08-16 17:27
*/
//註解裡面value屬性值可以省略不寫
//預設值是類名稱,首字母小寫
//UserService-userService

@Service(value = "userService") //<bean id="userService" class="..."></bean>
public class UserService {
//定義dao型別屬性
//不需要新增set方法
//添加註入屬性註解
@Autowired
private UserDao dao;
public void add()
{

System.out.println("service add ...");
dao.add();
}
}

(2)配置檔案

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 開始元件掃面   -->
    <!-- 1.如果掃描多個包,多個包使用逗號隔開
         2.掃描包上層目錄
     -->
    <context:component-scan base-package="com.orzjiangxiaoyu.spring"></context:component-scan>

 
</beans>

(3)測試

package com.orzjiangxiaoyu.spring.test1;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 * @author orz
 * @create 2020-08-16 17:06
 */
public class Test1 {
    @Test
    public void test1()
    {
        //1.載入spring配置檔案
        ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
        //2.獲取配置檔案的建立物件
        UserService userService = context.getBean("userService", UserService.class);
        userService.add();

    }
}

(4)結果

service add ...
dao add