我正在启动一个基于Stephan Zerhusen出色的SpringBoot JWT演示的项目。它在我的SpringToolSuite项目中安装并运行良好。我对它的进一步开发遇到了问题。
我想将Stephan的代码(org.zerhusen)与我的业务逻辑(com.mypackage)分开。我尝试过的@SpringBootApplication和@ComponentScan配置都不适用于我。
SpringBoot启动程序是:
package org.zerhusen;
[SNIP]
@SpringBootApplication
public class JwtDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JwtDemoApplication.class, args);
}
}
如果我只是从org更改包。泽胡森去通讯。mypackage并再次运行程序我看到:
APPLICATION FAILED TO START
***************************
Description:
Field userRepository in org.zerhusen.security.service.JwtUserDetailsServiceImpl required a bean of type 'org.zerhusen.security.repository.UserRepository' that could not be found.
Action:
Consider defining a bean of type 'org.zerhusen.security.repository.UserRepository' in your configuration.
现在UserRepository只是一个界面:
package org.zerhusen.security.repository;
[SNIP]
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
但该接口不是由用户代码实现的。由于目前我只使用H2(稍后我将讨论JPA和MySQL),因此该接口仅在UserDetailsService实现中引用:
package org.zerhusen.security.service;
[SNIP]
@Service
public class JwtUserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
[SNIP]
}
有很多stackoverflow文章告诉我使用配置,但是我已经有了:
@SpringBootApplication(scanBasePackages = {"org.zerhusen"})
@ComponentScan(basePackages = {"org.zerhusen"})
@EnableJpaRepositories(basePackages = {"org.zerhusen.security.repository.UserRepository"})
@EntityScan(basePackages = {"org.zerhusen"})
public class JwtDemoApplication {
[SNIP]
}
这些都不适合我。
我不想把所有的东西都强制放在一个包树中——我该如何在不重写Stephan的代码的情况下将我的代码与Stephan的代码融合?——但我的配置无法让我的程序运行。
有人能给我一个正确的配置吗?
谢谢,杰罗姆。
UPDATE ON7/30, 12:04CDT使用注释,我只使用类更改了@EnableJpaRepository语句。有了这个变化,应用程序可以正常工作。
考虑到这一点,我尝试了各种变化,一次评论一个注释:
我将接受这一成功(感谢所有响应者的一个工作应用程序),但我还不明白为什么需要这四个注释。
在@EnableJpaRepositories
中,可以使用basePackageClass
而不是basePackages
或设置org。泽胡森。安全存储库
如果您希望保留基本包
。
问题出在您的@EnableJpaRepository
中您指定了类名而不是包名。只需完全删除参数(事实上,您应该能够删除所有内容,但@SpringBootApplication
-@ComponentScan
包含在其中)。
一般来说,Boot的默认值是一个很好的通用折衷方案,所以不要开始显式地指定东西,除非您与默认值有实际冲突。
问题内容: 这是用例: 然后,我正在做: 这是我看到的: 我的书在哪里?:) 问题答案: 要编组的元素必须是公共的,或具有XMLElement注释。ArrayList类和您的类Books不符合任何这些规则。您必须定义一种方法来提供Book值并对其进行注释。 在您的代码上,仅更改您的Books类,并添加“ self getter”方法: 当您运行编组代码时,您将获得: (为清晰起见,我添加了换行符)
当在嵌入了tomcat的spring boot中运行代码时,Spring cloud consul可以像预期的那样工作。 当我们在独立的tomcat上部署代码时,它不起作用。似乎有一个Web服务器上启动领事服务注册。仅当我们在带有嵌入式 tomcat 的Spring启动内运行代码时,才会触发此事件。 https://github.com/spring-cloud/spring-cloud-cons
我在试着为Spock中的控制器写一个测试。 应用程序类只是Spring Boot最简单的配置(支持自动扫描)。它提供了一个with PasswordEncryptor。我想用提供模拟的bean替换应用程序中的这个bean。 没有注释,所以Spring不知道应该注入哪个bean。不幸的是,我不知道如何让Spring通过本地配置从应用程序中替换bean。
我正在尝试使用龙目岛和MapStruct配置SpringBoot(v2.6.2),已经配置了maven编译器插件和龙目岛地图结构绑定(注释处理器路径),但龙目岛类尚未创建: pom.xml 尝试使用DI时总是出现未初始化变量错误: 变量xxxx可能尚未初始化
我正在使用karaf 3.0.3和以下Hibernate捆绑包: 161|活动|80|;4.2.12.Final|hibernate core 162124活动#80 1244.1.12.Final124Hibernate entitymanager 172| 124活动80#4.2-12.fin 通过这种设置,我无法让事务回滚正常工作,尽管我可以将完全相同的组件(JPA DAO、服务层等)部署为
css在中不工作,但使用此css代码。我在css区域和html标记中首先编写,然后编写。为什么? CSS HTML