小编mar*_*ret的帖子

Spring Boot:从库项目中自动装配bean

我正在努力从我的自定义库中自动装配bean,并使用gradle导入.在阅读了几个类似的主题后,我仍然无法找到解决方案.

我有Spring Boot项目,它依赖于其他项目(我的自定义库包含Components,Repositories等...).该库是一个Spring不可运行的jar,主要由域实体和存储库组成.它没有可运行的Application.class和任何属性......

当我启动应用程序时,我可以看到我的'CustomUserService'bean(来自库)正在尝试初始化,但是在其中自动装配的bean无法加载(接口UserRepository)...

错误:

com.myProject.customLibrary.configuration.CustomUserDetailsS​​ervice中构造函数的参数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

14
推荐指数
4
解决办法
8510
查看次数

Spring Boot Security:使用自定义身份验证过滤器进行异常处理

我正在使用 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 spring-mvc spring-security spring-boot

5
推荐指数
1
解决办法
8730
查看次数

Scala Lenses在我的项目中的位置?

实际上我一直坚持功能编程代码风格和项目结构.用Java编程我知道在哪里放置我的逻辑,但我不熟悉函数风格.

实际上我尝试让我当前项目中的Scala类不可变.然后我想使用scalaz.Lens和scalaz.PLens来改变我的对象(实际创建新的).

在所有Lense示例中,人们将代码放在一个对象中,这扩展了App trait以简单地展示它是如何工作的.但在现实生活中的例子应该是一些适当的地方来写那些镜头.

在Java中,所有mutators和accessors都放在类本身中.但是对于镜头我不知道在哪里写它们.

将不胜感激任何建议

scala lenses

4
推荐指数
1
解决办法
179
查看次数