Spring为构造函数注入依赖项

时间:2014-11-10 17:01:19

标签: java spring spring-mvc

我计划使用下面的设置在我的Spring MVC中创建我的对象但是如何将值注入myService ie;使用默认值...

实例化对象
public class MyController {

    private MyService myService;


    @Autowired
    public void setMyService(MyService aService) { // autowired by Spring
        this.myService = aService;
    }

    @RequestMapping("/blah")
    public String someAction()
    {
        // do something here
        myService.foo();

        return "someView";
    }
}

为MyService

class Myservice(){
     String servicename;
     public Myservice(servicename){
           this.servicename = servicename;
     }

}

没有春天

  MyService first = new MyService("firstservice");
  MyService second = new MyService("secondservice");

2 个答案:

答案 0 :(得分:1)

只需使用@Autowired声明构造函数,将其标记为要使用的构造函数,并将其参数标记为@Value以指示要使用的值。

@Autowired 
public Myservice(@Value("example") String servicename){

或使用占位符

@Autowired 
public Myservice(@Value("${placeholder.key}") String servicename){

答案 1 :(得分:-2)

首先,您的考试使用Spring DI是错误的。将Myservice类型注入另一个您应该将MyService声明为接口:

interface Myservice(){         
    public void foo();
}

之后,声明此接口的实现(再次使用Spring DI注入String类型):

    class BarService() implements Myservice{
        String servicename;

        @Autowired
        public Myservice(@Value("servicename") String servicename){
             this.servicename = servicename;
        }
        public void foo(){

        }

   }