标签: spring-boot-starter

为什么spring-boot-starter项目的github项目是空的?

在查看github 上的spring-boot-starter-webspring-boot-starter-security项目时,我发现它们是空的,只有一个 build.gradle 文件存在。

我希望这符合预期,但这让我了解在哪里可以找到实际的源代码。而且我使用maven,所以我期望这些项目中至少有一个pom.xml。但由于它不存在,我想知道 Spring Boot 团队如何将这些工件发布到 Maven 中央存储库。

spring-boot spring-boot-starter

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

具有依赖性且没有@ComponentScan的Spring引导自动配置

Spring引导提供@ComponentScan了查找要扫描的包.

我正在建立一个@RestControllers内部package com.mylib.controller有的库.还有其他类以及不同包中的构造型注释.

所以,如果有人正在使用com.myapp 基础包开发SpringBoot Application .他在他的应用程序中使用我的库.他需要提一下@ComponentScan("com.mylib")发现图书馆的刻板印象.

有没有办法扫描组件而不包括库包@ComponentScan

由于spring-boot-starter-actuator暴露其端点只是依赖,没有定义@ComponentScan.或者无论应用程序基础包如何扫描的任何默认包.

dependency-injection spring-boot component-scan spring-boot-actuator spring-boot-starter

3
推荐指数
1
解决办法
2807
查看次数

当项目没有自己的类时,Gradle“实现”依赖关系是运行时范围的

我有一个针对自定义 Spring Boot Starter 的 Gradle 多项目构建。按照 Spring Boot Starter 约定,我的类全部位于“自动配置”项目中,并且我有一个单独的“启动器”项目,该项目仅引入使用自动配置所需的依赖项。

多项目构建会生成 2 个不可运行的 jar,其中 1 个用于自动配置子项目,1 个用于启动子项目。我使用此启动器的新项目会拉入启动器 jar,但是当我使用来自传递依赖项的类时,我的项目在类路径上的任何位置都找不到它们。

当我深入研究 starter jar 时,我发现它定义的所有依赖项都是运行时范围的,这可以解释问题。我可以通过将启动器中的所有依赖项设置为“编译”而不是“实现”来“修复”问题,但我的理解是“编译”即将消失,并且“实现”依赖项应该在编译范围内反正。有人可以告诉我可能需要什么额外的配置才能将启动器依赖项定义为“实现”而不将它们在生成的 jar 中定义为“运行时”吗?

我的启动器/自动配置多项目gradle 文件:

plugins {
    id 'org.springframework.boot' version '2.1.4.RELEASE' apply false
    id 'io.spring.dependency-management' version '1.0.7.RELEASE' apply false
}

wrapper {
    gradleVersion = '5.2.1'
}

repositories {
    mavenLocal()
    // private repo info omitted
    mavenCentral()
    jcenter()
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'maven-publish'
    apply plugin: 'java-library'

    group = …
Run Code Online (Sandbox Code Playgroud)

dependency-management gradle spring-boot spring-boot-starter

3
推荐指数
1
解决办法
2258
查看次数

Spring Boot 2.3.1 弹性搜索 7.6.2

我正在尝试制作一个连接到 elastichsearch 实例的简单 springboot 项目。我必须使用 springboot 2.3.1 和 elasticsearch 7.6.2。我用 springinitialiazr 创建了我的项目,相对的 pom.xml 是:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demoElastic</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我已经按照一些在线指南的建议创建了一个 Config.class

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.example.demo.repository")
@ComponentScan(basePackages = { "com.example.demo.service" })
public class Config {
 
    @Bean …
Run Code Online (Sandbox Code Playgroud)

java elasticsearch spring-boot spring-boot-starter

2
推荐指数
1
解决办法
1352
查看次数

Spring-boot 安全性不会尊重自定义 AuthenticationProvider 的角色

我正在创建自己的自定义身份验证提供程序。现在我只是在检查静态用户名和密码,但稍后这将被替换为更高级的东西,所以虽然我不需要在这种情况下使用自定义提供程序,但它对我没有多大帮助,因为它只是基础工作我还没有添加的附加代码。

话虽如此,这是我的代码处于损坏状态。

我的自定义身份验证提供程序:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class SatAuthenticationProvider implements AuthenticationProvider {

  private static final Logger LOGGER = LoggerFactory.getLogger(SatAuthenticationProvider.class);

  public SatAuthenticationProvider() {
    LOGGER.info("*** CustomAuthenticationProvider created");
  }

  @Override
  public boolean supports(Class<? extends Object> authentication) {
    return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
  }

  @Override
  public Authentication authenticate(Authentication authentication) throws AuthenticationException {

    LOGGER.info("*** Creating authentication");
    if (authentication.getName().equals("test") && authentication.getCredentials().equals("test")) {
      List<GrantedAuthority> grantedAuths = new ArrayList<>();
      grantedAuths.add(new SimpleGrantedAuthority("USER")); …
Run Code Online (Sandbox Code Playgroud)

java spring-security spring-boot spring-boot-starter

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