我正在努力从我的自定义库中自动装配bean,并使用gradle导入.在阅读了几个类似的主题后,我仍然无法找到解决方案.
我有Spring Boot项目,它依赖于其他项目(我的自定义库包含Components,Repositories等...).该库是一个Spring不可运行的jar,主要由域实体和存储库组成.它没有可运行的Application.class和任何属性......
当我启动应用程序时,我可以看到我的'CustomUserService'bean(来自库)正在尝试初始化,但是在其中自动装配的bean无法加载(接口UserRepository)...
错误:
com.myProject.customLibrary.configuration.CustomUserDetailsService中构造函数的参数0需要一个无法找到的类型为"com.myProject.customLibrary.configuration.UserRepository"的bean.
我甚至试图设置'Order',显式加载它(使用'scanBasePackageClasses'),使用包和标记类扫描,添加额外的'EnableJPARepository'注释但没有任何效果......
代码示例(为简单起见,包名称已更改)
package runnableProject.application;
import runnableProject.application.configuration.ServerConfigurationReference.class
import com.myProject.customLibrary.SharedReference.class
//@SpringBootApplication(scanBasePackages = {"com.myProject.customLibrary", "runnableProject.configuration"})
//@EnableJpaRepositories("com.myProject.customLibrary")
@SpringBootApplication(scanBasePackageClasses = {SharedReference.class, ServerConfigurationReference.class})
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
来自图书馆的课程:
package com.myProject.customLibrary.configuration;
import com.myProject.customLibrary.configuration.UserRepository.class;
@Service
public class CustomUserDetailsService implements UserDetailsService {
private UserRepository userRepository;
@Autowired
public CustomUserDetailsService(UserRepository userRepository) {
this.userRepository = userRepository;
}
...
package myProject.customLibrary.configuration;
@Repository
public interface UserRepository extends CustomRepository<User> {
User findByLoginAndStatus(String var1, Status var2);
...
}
Run Code Online (Sandbox Code Playgroud) multi-module spring-data-jpa spring-ioc spring-boot component-scan
我正在使用 Spring Boot + Spring Security(java 配置)。我的问题是旧问题,但我发现的所有信息都部分过时,并且大部分包含 xml-config (这很难甚至不可能适应一段时间)
我正在尝试使用令牌(不存储在服务器端)进行无状态身份验证。长话短说 - 它是 JSON Web 令牌身份验证格式的简单模拟。我在默认过滤器之前使用了两个自定义过滤器:
TokenizedUsernamePasswordAuthenticationFilter 在入口点(“/myApp/login”)成功验证后创建令牌
TokenAuthenticationFilter 尝试使用所有受限 URL 的令牌(如果提供)对用户进行身份验证。
我不明白如何正确处理自定义异常(使用自定义消息或重定向),如果我想要一些...过滤器中的异常与控制器中的异常无关,因此它们不会由相同的处理程序处理...
如果我理解正确的话,我不能使用
.formLogin()
.defaultSuccessUrl("...")
.failureUrl("...")
.successHandler(myAuthenticationSuccessHandler)
.failureHandler(myAthenticationFailureHandler)
Run Code Online (Sandbox Code Playgroud)
自定义异常,因为我使用自定义过滤器...那么该怎么做呢?
我的配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and() .anonymous()
.and() .authorizeRequests()
.antMatchers("/").permitAll()
...
.antMatchers(HttpMethod.POST, "/login").permitAll()
.and()
.addFilterBefore(new TokenizedUsernamePasswordAuthenticationFilter("/login",...), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(new TokenAuthenticationFilter(...), UsernamePasswordAuthenticationFilter.class)
}
Run Code Online (Sandbox Code Playgroud) 实际上我一直坚持功能编程代码风格和项目结构.用Java编程我知道在哪里放置我的逻辑,但我不熟悉函数风格.
实际上我尝试让我当前项目中的Scala类不可变.然后我想使用scalaz.Lens和scalaz.PLens来改变我的对象(实际创建新的).
在所有Lense示例中,人们将代码放在一个对象中,这扩展了App trait以简单地展示它是如何工作的.但在现实生活中的例子应该是一些适当的地方来写那些镜头.
在Java中,所有mutators和accessors都放在类本身中.但是对于镜头我不知道在哪里写它们.
将不胜感激任何建议