guice三种注入方式 <2>

guice三种注入方式 <2>

guice提供了强大的注入方式。

  • 属性注入
  • 构造器注入
  • set方式注入

1.属性注入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import com.google.inject.Inject;
import com.google.inject.Singleton;

/**
* guice 不同的注入方式
* @author bruce
*
*/
@Singleton
public class TestInjection {

@Inject
private Dao dao;

void test(){

dao.testGuice();
}

}

2.构造方法注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import com.google.inject.Inject;
import com.google.inject.Singleton;

/**
* guice 不同的注入方式
*
* @author bruce
*
*/
@Singleton
public class TestInjection {

private Dao dao;

@Inject
public TestInjection(Dao dao) {
this.dao = dao;
}

void test() {

dao.testGuice();
}

}

3.set方式注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import com.google.inject.Inject;
import com.google.inject.Singleton;

/**
* guice 不同的注入方式
*
* @author bruce
*
*/
@Singleton
public class TestInjection {

private Dao dao;

@Inject
public void setDao(Dao dao) {
this.dao = dao;
}


void test() {

dao.testGuice();
}

}

==当然,在我们的module中需要绑定这个TestInjection这个类才可以用哦.==

1
2
3
4
5
6
7
8
9
10
11
import com.google.inject.AbstractModule;

public class TestModule extends AbstractModule{


@Override
protected void configure() {
bind(Dao.class).to(DaoImpl.class);
bind(TestDaoInjection.class);
}
}

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;


public class Test {

public static void main(String[] args) {
Injector injector = Guice.createInjector(new TestModule());
TestDaoInjection test = injector.getInstance(TestDaoInjection.class);
test.test();
}
}

结果就是你想要的…

平时用得最多,估计属性注入最方便了。但是也有特殊情况,一切看项目需要来做了。。。

生活不止苟且,还有我喜爱的海岸.