使用配置文件引用服务的spring控制器
我有一个SpringMVC项目。我有一个控制器,定义如下:使用配置文件引用服务的spring控制器,spring,spring-mvc,Spring,Spring Mvc,我有一个SpringMVC项目。我有一个控制器,定义如下: public class HelloController { private HelloService helloService; @RequestMapping("/hello") public void sayHello() { helloService.sayHello(); } } public class HelloServiceImpl implements HelloS
public class HelloController {
private HelloService helloService;
@RequestMapping("/hello")
public void sayHello() {
helloService.sayHello();
}
}
public class HelloServiceImpl implements HelloService {
public void sayHello() {
System.out.println("Hello Spring !");
}
}
public interface HelloService {
void sayHello();
}
<mvc:annotation-driven/>
<context:component-scan base-package="com.pack"/>
<bean id="HelloController" class="com.pack.controllers.HelloController">
<property name="helloService" ref="HelloService"></property>
</bean>
<bean id="HelloService" class="com.pack.services.HelloServiceImpl"/>
我的服务如下:
public class HelloController {
private HelloService helloService;
@RequestMapping("/hello")
public void sayHello() {
helloService.sayHello();
}
}
public class HelloServiceImpl implements HelloService {
public void sayHello() {
System.out.println("Hello Spring !");
}
}
public interface HelloService {
void sayHello();
}
<mvc:annotation-driven/>
<context:component-scan base-package="com.pack"/>
<bean id="HelloController" class="com.pack.controllers.HelloController">
<property name="helloService" ref="HelloService"></property>
</bean>
<bean id="HelloService" class="com.pack.services.HelloServiceImpl"/>
界面如下:
public class HelloController {
private HelloService helloService;
@RequestMapping("/hello")
public void sayHello() {
helloService.sayHello();
}
}
public class HelloServiceImpl implements HelloService {
public void sayHello() {
System.out.println("Hello Spring !");
}
}
public interface HelloService {
void sayHello();
}
<mvc:annotation-driven/>
<context:component-scan base-package="com.pack"/>
<bean id="HelloController" class="com.pack.controllers.HelloController">
<property name="helloService" ref="HelloService"></property>
</bean>
<bean id="HelloService" class="com.pack.services.HelloServiceImpl"/>
我的配置文件如下:
public class HelloController {
private HelloService helloService;
@RequestMapping("/hello")
public void sayHello() {
helloService.sayHello();
}
}
public class HelloServiceImpl implements HelloService {
public void sayHello() {
System.out.println("Hello Spring !");
}
}
public interface HelloService {
void sayHello();
}
<mvc:annotation-driven/>
<context:component-scan base-package="com.pack"/>
<bean id="HelloController" class="com.pack.controllers.HelloController">
<property name="helloService" ref="HelloService"></property>
</bean>
<bean id="HelloService" class="com.pack.services.HelloServiceImpl"/>
错误是您需要为bean helloService生成get和set Bean属性“helloService”不可写或具有无效的setter方法。setter的参数类型与getter的返回类型匹配吗 但是,如果您尝试注入bean,甚至手动进行配置,则需要在@Autowire中添加注释
@Autowire
private HelloService helloService;
错误是您需要为bean helloService生成get和set Bean属性“helloService”不可写或具有无效的setter方法。setter的参数类型与getter的返回类型匹配吗 但是,如果您尝试注入bean,甚至手动进行配置,则需要在@Autowire中添加注释
@Autowire
private HelloService helloService;
在HelloController类中添加helloservice的setter和getter可以解决这个问题。应该不需要添加@autowired注释,这样做之后在HelloController类中添加helloservice的setter和getter就可以了。应该不需要添加@autowired注释,然后添加@autowired注释您可以通过提供用于注入helloService的setter方法来实现,如下所示
//塞特注射
public void setHelloService(HelloService helloService) {
this.helloService = helloService;
}
或者您可以通过使用构造函数注入为注入helloService提供构造函数来实现它,如下所示//构造函数注入
public HelloController (HelloService helloService) {
this.helloService = helloService;
}
//配置文件中的更改
<bean id="HelloController" class="com.pack.controllers.HelloController">
<constructor-arg ref="HelloService"/>
您可以通过提供用于注入helloService的setter方法来实现它,如下所示
//塞特注射
public void setHelloService(HelloService helloService) {
this.helloService = helloService;
}
或者您可以通过使用构造函数注入为注入helloService提供构造函数来实现它,如下所示//构造函数注入
public HelloController (HelloService helloService) {
this.helloService = helloService;
}
//配置文件中的更改
<bean id="HelloController" class="com.pack.controllers.HelloController">
<constructor-arg ref="HelloService"/>
如果您有XML配置,则添加
@Autowired
是毫无意义的。如果您有XML配置,则添加@Autowired
是毫无意义的。将@Autowired
放在字段上是一种糟糕的做法。现在,您已经了解了为什么它不好了。将@Autowired
放在字段上是一种不好的做法。现在你已经经历了为什么它不好。