我有一个控制器
@Controller
public class AppController{
@Autowired
private IDemoApplicationService service;
//more code
}
@Service("service")
public class DemoApplicationServiceImpl implements IDemoApplicationService{
@Override
public void createEmployee(Employee employee){
try {
dao.insertEmployee(employee);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String updateEmployee(Employee employee, int id) {
dao.updateEmployee(employee, id);
return "redirect:/employees";
}
@Override
public String deleteEmployee(int id) {
dao.deleteEmployee(id);
return "redirect:/employees";
}
@Override
public String getEmployees(Model model) {
model.addAttribute("employees", dao.getEmployees());
return "employees";
}
@Override
public Employee findById(int id) {
return dao.findById(id);
}
}
服务接口
public interface IDemoApplicationService {
}
我想在我的控制器中使用@autowired来使用该服务,但当我运行应用程序时,我得到以下错误
org.springframework.beans.factory.beanCreationException:创建名为“demo application”的bean时出错:注入autowired依赖项失败;嵌套异常为org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接字段:private Services.idemoApplicationService Controllers.DemoApplication.Service;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[Services.IDemoApplicationService]类型得合格bean:应至少有一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
谢谢
如果您查看@springbootapplication
内部,它包含许多其他Spring的注释
其中一些:
1)@Configuration
2)@ComponentScan
在@SpringBootApplication中,您可以通过路径找到参数:
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
public String[] scanBasePackages() default {};
您可以看到它是@componentscan
的别名,以了解要扫描哪些包以查找带有@component或子注释(如@service@repository
)的类。如果不提供此参数,Spring将扫描带有SpringBootApplication注释的类的主包。
您的服务很可能位于不同的包中
在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa
依赖注入 Dependency Injection is a strong mechanism, which helps us easily manage dependencies of our classes. It is very popular pattern in strongly typed languages like C# and Java. 依赖注入是一个很强大的机制,该机制可以帮
简介 Hyperf 默认采用 hyperf/di 作为框架的依赖注入管理容器,尽管从设计上我们允许您更换其它的依赖注入管理容器,但我们强烈不建议您更换该组件。 hyperf/di 是一个强大的用于管理类的依赖关系并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 注解及注解注入 的支持、提供了无比强大的 AOP 面向切面编程 能力,这些能力及易用性作为 Hyper
出自维基百科 Wikipedia: 依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。 这句解释让依赖注入的概念听起来比它实际要复杂很多。依赖注入通过构造注入,函数调用或者属性的设置来提供组件的依赖关系。就是这么简单。
问题内容: 我已经阅读了AngularJS文档,但仍然没有我知道的答案。 为什么要使用两次?一次作为数组元素,第二次作为函数参数。 问题答案: 如果缩小此代码: 您将以(类似)结尾: 由于参数名称丢失,因此Angular将无法注入依赖项。 另一方面,如果您将此代码最小化: 您将以: 参数名称可用:Angular的DI可操作。
我想,对于一个可以注入的类来说,任何类都必须被注释。但是我看到一个示例演示了一个简单的REST服务,其中注入了一个没有任何注释的类。HelloService没有注释。是豆子吗?它的生命周期范围如何? 本例中还有一个问题是,为什么在web.xml中使用“hello”?项目中没有定义名为“Hello”的any类,也没有名为“Hello”的any目录。