小编And*_*son的帖子

Spring:从命令行覆盖一个application.property

我有一个带有默认变量值的application.properties文件.我希望能够在运行时更改其中一个mvn spring-boot:run.我找到了如何更改整个文件,但我只想更改其中一个或两个属性.

java spring spring-boot

44
推荐指数
6
解决办法
3万
查看次数

Spring Boot 1.2.5.RELEASE - 通过Gmail SMTP发送电子邮件

首先,我需要说发送1.2.0.RELEASE的电子邮件工作正常

application.properties:

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
Run Code Online (Sandbox Code Playgroud)

pox.xml

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.2.0.RELEASE</version>
     <relativePath/>
</parent>
Run Code Online (Sandbox Code Playgroud)

.......

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)


将父版本更改为1.2.5.RELEASE电子邮件发送无效

文档说: 如果spring.mail.host和相关库(由spring-boot-starter-mail定义)可用,则创建默认JavaMailSender(如果不存在).


所以我补充说

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

它没有帮助,然后我已经取而代之

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我也试过了

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.port = 465
Run Code Online (Sandbox Code Playgroud)

结果一样.

手动创建和配置@Bean不是问题.但是我想要使用Spring Boot的所有美感.
请指出我的错误.

提前致谢

java email spring jakarta-mail spring-boot

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

运行基于 Spark 的 Spring Boot 应用程序时获取 java.lang.NoSuchMethodError: org.yaml.snakeyaml.Yaml.&lt;init&gt;

SnakeYaml jar 存在于 classPath:snakeyaml-1.26.jar

2330 [main] ERROR org.springframework.boot.SpringApplication  - Application run failed
java.lang.NoSuchMethodError: org.yaml.snakeyaml.Yaml.<init>(Lorg/yaml/snakeyaml/constructor/BaseConstructor;Lorg/yaml/snakeyaml/representer/Representer;Lorg/yaml/snakeyaml/DumperOptions;Lorg/yaml/snakeyaml/LoaderOptions;Lorg/yaml/snakeyaml/resolver/Resolver;)V
    at org.springframework.boot.env.OriginTrackedYamlLoader.createYaml(OriginTrackedYamlLoader.java:71)
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:162)
    at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:76)
    at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:607)
Run Code Online (Sandbox Code Playgroud)

snakeyaml spring-boot apache-spark

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

HATEOAS微服务的跨服务链接

我有许多使用Spring Boot构建的微服务,所以为了一点乐趣,我想我会为他们添加HATEOAS以帮助建立跨资源链接.它似乎在一个特定的项目中工作得很好,但我想知道是否有一种很好的方式来链接API.举个例子,假设我有3个服务:

用户详细信息服务:代码:

/users/{userid}
Run Code Online (Sandbox Code Playgroud)

用户日历服务:代码:

/users/{userid}/appointments
/users/{userid}/appointments/{appointmentid}
Run Code Online (Sandbox Code Playgroud)

用户消息服务:代码:

/users/{userid}/messages
/users/{userid}/messages/{messageid}
Run Code Online (Sandbox Code Playgroud)

为了通过API实现这一点,最好是从用户资源到其约会和消息的链接.同样,从这些资源返回链接会很不错.当我有一个包含类路径上的所有内容的API时,这是非常可行的,我可以编写如下代码:

码:

user.add(linkTo(methodOn(CalendarController.class).appointments(user.getKey())).withRel("appointments"))
Run Code Online (Sandbox Code Playgroud)

但是,如果CalendarController不在我正在服务的服务的类路径上,我就无法做到这一点.

有没有一个好的/推荐的方法来创建不在当前项目中的控制器的链接?

春季论坛引用

spring hateoas spring-hateoas spring-boot microservices

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

spring boot rabbitmq MappingJackson2MessageConverter自定义对象转换

我正在尝试创建一个带弹簧启动的简单弹簧启动应用程序,它将"生成"消息发送到rabbitmq交换/队列以及另一个"消耗"这些消息的示例Spring启动应用程序.所以我有两个应用程序(或微服务,如果你愿意).1)"生产者"微服务2)"消费者"微服务

"生产者"有2个域对象.Foo和Bar应该转换为json并发送给rabbitmq."消费者"应该分别接收并将json消息转换为域Foo和Bar.出于某种原因,我不能完成这个简单的任务.关于这个的例子并不多.对于消息转换器我想使用org.springframework.messaging.converter.MappingJackson2MessageConverter

这是我到目前为止:

生产者MICROSERVICE

package demo.producer;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.core.RabbitMessagingTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
import org.springframework.stereotype.Service;

@SpringBootApplication
public class ProducerApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }

    @Bean
    Queue queue() {
        return new Queue("queue", false);
    }

    @Bean
    TopicExchange exchange() {
        return new TopicExchange("exchange");
    }

    @Bean
    Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("queue");
    }

    @Bean
    public MappingJackson2MessageConverter jackson2Converter() {
        MappingJackson2MessageConverter converter …
Run Code Online (Sandbox Code Playgroud)

java json rabbitmq spring-amqp spring-boot

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

如何使用Spring REST Docs将顶级数组记录为响应有效负载

我使用Spring REST Docs来记录REST API.我正在尝试记录以下API操作:

GET /subsystems
GET /subsystems/some_name
Run Code Online (Sandbox Code Playgroud)

例如,调用GET /subsystems/samba返回以下JSON对象:

{ 
  "id": "samba", 
  "description": "..." 
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码片段来使用Spring REST Docs来记录此API操作:

this.mockMvc.perform(
    get("/subsystems/samba").accept(MediaType.APPLICATION_JSON))
    .andExpect(status().isOk()).andDo(
        document("subsystem").withResponseFields(
            fieldWithPath("id").description("Subsystem name"),
            fieldWithPath("description").description("Subsystem description")));
Run Code Online (Sandbox Code Playgroud)

我的问题是第一个操作:调用GET /subsystems返回一个JSON数组:

[ 
  { 
    "id" : "samba", 
    "description" : "..." 
  }, 
  { "id" : "ownCloud", 
    "description" : "..." 
  },
  { "id" : "ldap", 
    "description" : "..." 
  } 
]
Run Code Online (Sandbox Code Playgroud)

我找不到任何显示如何在Spring REST Docs文档中记录此类结果的示例.我该怎么办?

java rest spring json spring-restdocs

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

使用TestNG集成测试Spring Boot Web应用程序

我们最近将我们的应用程序与spring boot集成 我们的测试用例基于testng框架.我们的基础测试类如下所示

@SpringApplicationConfiguration(classes = Application.class)
  @ActiveProfiles(profiles = "test")
  @WebAppConfiguration
  @IntegrationTest
  public class BaseTestCase extends AbstractTestNGSpringContextTests {
  }
Run Code Online (Sandbox Code Playgroud)

我们定义了上面的类来设置活动配置文件并加载应用程序上下文.所有集成测试类都扩展了BaseTestCase

我们的一个基本测试用例如下所示

 @Test
   public void testPing() throws Exception{
      RestTemplate restTemplate = new RestTemplate();
      String response = restTemplate.getForObject(
                <some url>,
                String.class);
      Assert.assertNotNull(response);
    }
Run Code Online (Sandbox Code Playgroud)

当我们运行上面的测试用例时,我们得到以下异常

FAILED CONFIGURATION: @BeforeClass springTestContextPrepareTestInstance
java.lang.IllegalStateException: The WebApplicationContext for test context [DefaultTestContext@11b72c96 testClass = DataResourceTest, testInstance = com.xactly.insights.resource.imp.DataResourceTest@5b630a31, testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@10d034f0 testClass = DataResourceTest, locations = '{}', classes = '{class com.xactly.insights.app.Application}', contextInitializerClasses = '[]', …
Run Code Online (Sandbox Code Playgroud)

testng spring-boot

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

无法导入org.h2.server.web.WebServlet

我正在尝试配置我的spring启动应用程序以使用h2控制台.我发现了一些文章,所有文章都使用webServlet.但我无法导入该类,尽管我的pom.xml中添加了h2依赖项.我收到此错误消息can not resolve the symbol WebServlet.我的进口线

import org.h2.server.web.WebServlet;
Run Code Online (Sandbox Code Playgroud)

下面是我的pom.xml

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>2.2.6</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>2.2.6</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-logging-juli</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.primefaces</groupId> …
Run Code Online (Sandbox Code Playgroud)

java h2 maven spring-boot

8
推荐指数
2
解决办法
7314
查看次数

无法启动嵌入式Tomcat - Spring Boot

我是Spring Boot试图学习的新手,现在我在使用Spring启动运行Spring Data Rest时遇到了问题.

我想用Spring Boot使用Spring Data REST构建一个应用程序.

我正面临这个问题

Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
    at com.teamtreehouse.core.Application.main(Application.java:10)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
    ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardServer[-1]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:342)
    at …
Run Code Online (Sandbox Code Playgroud)

spring-boot

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

Spring Actuator 的“jvm.memory.max”指标与 Runtime.getRuntime().maxMemory() 不匹配

我正在尝试 Spring Boot Actuator 并查看“/actuator/metrics/jvm.memory.max”端点。

我还使用以下 JVM 选项运行我的 Springboot 应用程序:

-Xmx104m

我创建了一个端点(“/memory”,它返回应用程序的 Total、Free、Used 和 Max memory。为此我使用了 Runtime.getRuntime().getXXX() 方法。

我的问题是 Springboot 的“jvm.memory.max”以字节为单位显示的值与 -Xmx 值以及“/memory”端点显示的值不匹配。

任何想法为什么这种不匹配?

在此处输入图片说明

在此处输入图片说明

jvm heap-memory spring-boot spring-boot-actuator micrometer

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