CDI技术第九步 构造注入与setter注入
构造器注入和setter注入其实都很简单,有过spring基础的人都会玩。但在这里我还是不厌其烦的写点代码试验试验。
我写个简单,构造器注入一个数字a,setter方法注入一个数字b,然后完成相加。
package com.rschy.cdiinject;
import java.util.Random;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Produces;
@RequestScoped
public class RandomInt {
@Produces
public int get(){
return new Random().nextInt(100);
}
}
package com.rschy.cdiinject;
import java.io.IOException;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/add.html")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Instance<Integer> a;
private Instance<Integer> b;
@Inject
public AddServlet(Instance<Integer> a) {
super();
this.a = a;
}
@Inject
public void setB(Instance<Integer> b) {
this.b = b;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int a1 = a.get();
int b1 = b.get();
resp.getWriter().append(a1 + "+" + b1 + "=" + (a1 + b1));
}
}
就这么简单,浏览器运行结果: