Guice依赖注入的三种方式和injectMembers方法的使用

来源:互联网 发布:淘宝主营类目在哪里看 编辑:程序博客网 时间:2024/06/05 05:51
package com.ilucky.guice.test4;import com.google.inject.Guice;import com.google.inject.Injector;/** * v1.0:20161114 * 注解:依赖注入@Inject * 依赖注入的方式有三种:属性注入,构造方法注入和setter方法注入. * Injector.injectMembers方法的使用: * 即如果某个对象是new出来的,但是它里面的对象需要依赖需要注入,则可使用injectMembers方法. * @author IluckySi */public class MainTest {    public static void main(String[] args) {        Injector injector = Guice.createInjector();        Person person = injector.getInstance(Person.class);        person.diplayInfo();        System.out.println("-------------Injector.injectMembers------------------");        Person2 person2 = injector.getInstance(Person2.class);        person2.diplayInfo();    }}/**Mobile:[Mobile: 988438434]Laptop:[Laptop: HP 323233232,$545034]Other:[Other: IluckySi]-------------Injector.injectMembers------------------Laptop:[Laptop: HP 323233232,$545034]*/
package com.ilucky.guice.test4;import com.google.inject.Inject;public class Person {    private Other other;    private Mobile mobile;    @Inject    private Laptop laptop;    @Inject    public Person(Mobile mobile) {        this.mobile = mobile;    }    @Inject    public void setOther(Other other) {        this.other = other;    }    public void diplayInfo() {        System.out.println("Mobile:" + mobile);        System.out.println("Laptop:" + laptop);        System.out.println("Other:" + other);    }}
package com.ilucky.guice.test4;public class Other {    private String name;    public Other() {        this.name = "IluckySi";    }    public String toString() {        return "[Other: " + name + "]";    }}
package com.ilucky.guice.test4;public class Mobile {    private String number;    public Mobile() {        this.number = "988438434";    }    public String toString() {        return "[Mobile: " + number + "]";    }}
package com.ilucky.guice.test4;public class Laptop {    private String model;    private String price;    public Laptop() {        this.model = "HP 323233232";        this.price = "$545034";    }    public String toString() {        return "[Laptop: " + model + "," + price + "]";    }}
package com.ilucky.guice.test4;import com.google.inject.Guice;import com.google.inject.Injector;public class Person2 {    private Home h;    public Person2() {        h = new Home();    }    public void diplayInfo() {        Injector injector = Guice.createInjector();        injector.injectMembers(h);        h.diplayInfo();    }}
package com.ilucky.guice.test4;import com.google.inject.Inject;public class Home {    @Inject    private Laptop laptop;    public void diplayInfo() {        System.out.println("Laptop:" + laptop);    }}
原创粉丝点击