我正在学习Spring Boot的JavaBrains教程。
我的项目结构如下:
courseapiapp.java:
@SpringBootApplication
@ComponentScan(basePackages = {
"com.bloodynacho.rishab.topics"
})
@EntityScan("com.bloodynacho.rishab.topics")
public class CourseApiApp {
public static void main(String[] args) {
SpringApplication.run(CourseApiApp.class, args);
}
}
@RestController
public class TopicController {
@Autowired
private TopicService topicService;
@RequestMapping(
value = "/topics"
)
public List<Topic> getAllTopcs() {
return topicService.getAllTopics();
}
}
topicService.java:
@Service
public class TopicService {
@Autowired
private TopicRepository topicRepository;
public List<Topic> getAllTopics() {
List<Topic> topics = new ArrayList<>();
this.topicRepository
.findAll()
.forEach(topics::add);
return topics;
}
}
topic.java:
@Entity
public class Topic {
@Id
private String id;
private String name;
private String description;
}
topicRepository.java:
@Repository
public interface TopicRepository extends CrudRepository<Topic, String>{
}
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
***************************
APPLICATION FAILED TO START
***************************
Description:
Field topicRepository in com.bloodynacho.rishab.topics.TopicService required a bean of type 'com.bloodynacho.rishab.topics.TopicRepository' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.bloodynacho.rishab.topics.TopicRepository' in your configuration.
Process finished with exit code 1
编辑:我读到的这篇文章解释了@AutoWired在没有实际实现接口的情况下是如何工作的。我明白解决办法,但我不明白如何解决我的问题。显然,设置和配置Spring数据的方式存在一些问题(如答案所述)
因为如果使用@SpringBootApplication
注释的其他包层次结构位于主应用程序的下面,那么您就会被隐式组件扫描覆盖。
因此,可以通过以下两个步骤实现一个简单的解决方案:
com.bloodynacho.rishab
。@componentscan
和@entityscan
批注。@componentscan
与@entityscan
不同,但根据我的经验,也可以删除它。)我一直在学习Spring Boot的JavaBrains教程。 我的项目结构如下: courseapiapp.java: topic.java: topicrepository.java: pom.xml: 编辑:我读了这篇文章,解释了即使没有实际实现@Autowired接口是如何工作的。我明白解决办法,但我不明白如何解决我的问题。显然,Spring数据的设置和配置方式存在一些问题(如答案中所述)
更新: 我发现我将类A注入到扩展外部类的类C中,该类不受spring管理,如下所示: 这应该是交易失败的主要原因。 另一个问题:有没有办法让spring管理类A的事务,该类已经注入到非spring处理的anothor类中? 我正在用Spring Boot和Mybatis建立一个项目。 我有一个问题,其中一个服务类无法创建事务连接,也不会执行回滚。 我发现,如果我去掉B类中A类的注入,就像这样: 类
当我尝试打开下面的URL时,我确实看到了我的JSON响应。 http://localhost:8080/v3/api-docs
我的spring boot项目不需要datasource配置,但当我运行它时,出现了错误: 申请启动失败 描述:配置数据源失败:未指定“url”属性,无法配置嵌入式数据源。 原因:无法确定合适的驱动程序类别 行动: 考虑以下内容:如果您想要一个嵌入式数据库(H2、HSQL或Derby),请将其放在类路径上。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有活动的配置文件) 我的a
我对整个Spring的生态系统都是陌生的。我一直在学习一些教程,能够创建一个Spring Boot应用程序并执行crud操作。然后我开始把这个项目改成mybatis的标准。 我已经尝试了许多其他类似问题的答案,但到目前为止没有一个是有效的。 下面是问题陈述: 实现类实现为: 我的Mapper类如下所示: 我的Mapper.xml课是: 最后是我的控制器类: 我得到的错误是: 描述: com.cru
我试图在Spring Boot中创建一个简单的REST服务。在我使用CrudRepository之前,一切都很好。现在我得到了这个错误- ***应用程序启动失败 描述: 公司中的现场er。Spring靴。io。受雇者EmployeeService需要“company”类型的bean。Spring靴。io。受雇者找不到EmployeeRepo“”。 措施: 考虑定义一个“company”类型的bea