Spring 动态限定词
Spring dynamic Qualifier
我有一个接口 Shape
public interface Shape {
String draw();
}
以及上述 Shape 接口的两个实现
@Component("triangle")
public class Triangle implements Shape {
public String draw() {
return "drawing Triangle";
}
}
和
@Component("circle")
public class Circle implements Shape {
public String draw() {
return "Drawing Circle";
}
}
在我的客户端代码中,如果我必须根据限定符
在 运行 时决定使用哪个形状 class
@Autowired
private Shape shape;
@GET
@Produces(MediaType.TEXT_HTML)
@Path("/shape")
public String getShape(@PathParam("type")
String type) {
String a = shape.draw();
return a;
}
怎么做?
我想传递 "type" 作为路径参数来决定在 运行 时间注入哪个 Shape 对象。请帮我解决这个问题。
我可以找到一种通过在客户端代码中注入 ApplicationContext 来解决这个问题的方法。
@Autowired
private ApplicationContext appContext;
并借助 getBean 方法查找 bean:
@GET
@Produces(MediaType.TEXT_HTML)
@Path("/shape/{type}")
public String getShape(@PathParam("type")
String type) {
Shape shape = appContext.getBean(type, Shape.class);
return shape.draw();
}
我希望这会对某人有所帮助:)
我有一个接口 Shape
public interface Shape {
String draw();
}
以及上述 Shape 接口的两个实现
@Component("triangle")
public class Triangle implements Shape {
public String draw() {
return "drawing Triangle";
}
}
和
@Component("circle")
public class Circle implements Shape {
public String draw() {
return "Drawing Circle";
}
}
在我的客户端代码中,如果我必须根据限定符
在 运行 时决定使用哪个形状 class @Autowired
private Shape shape;
@GET
@Produces(MediaType.TEXT_HTML)
@Path("/shape")
public String getShape(@PathParam("type")
String type) {
String a = shape.draw();
return a;
}
怎么做? 我想传递 "type" 作为路径参数来决定在 运行 时间注入哪个 Shape 对象。请帮我解决这个问题。
我可以找到一种通过在客户端代码中注入 ApplicationContext 来解决这个问题的方法。
@Autowired
private ApplicationContext appContext;
并借助 getBean 方法查找 bean:
@GET
@Produces(MediaType.TEXT_HTML)
@Path("/shape/{type}")
public String getShape(@PathParam("type")
String type) {
Shape shape = appContext.getBean(type, Shape.class);
return shape.draw();
}
我希望这会对某人有所帮助:)