1. 程式人生 > >spring這種@Resource或者@Autowired這種如何去注入bean

spring這種@Resource或者@Autowired這種如何去注入bean

     對於這個,我是簡單寫一點,之前看spring的原始碼中,對於bean的定義的封裝中,我們發現其中用到了反射中的很多內容,簡單的做了一個dome模擬這個沒有set也沒有構造方法的注入:

   首先如下:

public class User {

    private String name;
    private String toCall;


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getToCall() {
        return toCall;
    }


    public void setToCall(String toCall) {
        this.toCall = toCall;
    }

}

呼叫的service如下:

public class Test3Dome {
    private User user;
    public void testUser(){
        System.out.println(user!=null?user.getToCall()+"; user is not null":"user is null");
    }

}

然後如何把User注入到裡面:

User user=new User();
user.setName("hahah");
user.setToCall("------");


Test3Dome test3Dome=new Test3Dome();
Field field=Test3Dome.class.getDeclaredField("user");
//下面的是關鍵,這個是private能注入成功的關鍵
field.setAccessible(true);

field.set(test3Dome,user);

  這樣就好了,結果成功為------; user is not null

  這樣就是spring沒有set方法和構造方法注入成功的關鍵(jdk反射的使用)。