Spring Boot生成的项目打印两次。

huangapple go评论258阅读模式
英文:

Spring boot generated project printing twice

问题

POM:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.1.2</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example.demo</groupId>
  12. <artifactId>demo</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>demo</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>17</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-groovy-templates</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-jdbc</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.flywaydb</groupId>
  34. <artifactId>flyway-core</artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.mybatis.spring.boot</groupId>
  38. <artifactId>mybatis-spring-boot-starter</artifactId>
  39. <version>3.0.2</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-devtools</artifactId>
  44. <scope>runtime</scope>
  45. <optional>true</optional>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-docker-compose</artifactId>
  50. <scope>runtime</scope>
  51. <optional>true</optional>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.projectlombok</groupId>
  55. <artifactId>lombok</artifactId>
  56. <optional>true</optional>
  57. </dependency>
  58. <dependency>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-starter-test</artifactId>
  61. <scope>test</scope>
  62. </dependency>
  63. <dependency>
  64. <groupId>org.mybatis.spring.boot</groupId>
  65. <artifactId>mybatis-spring-boot-starter-test</artifactId>
  66. <version>3.0.2</version>
  67. <scope>test</scope>
  68. </dependency>
  69. <dependency>
  70. <groupId>org.jetbrains</groupId>
  71. <artifactId>annotations</artifactId>
  72. <version>RELEASE</version>
  73. <scope>compile</scope>
  74. </dependency>
  75. <dependency>
  76. <groupId>jakarta.annotation</groupId>
  77. <artifactId>jakarta.annotation-api</artifactId>
  78. <version>1.3.5</version>
  79. </dependency>
  80. <dependency>
  81. <groupId>org.junit.jupiter</groupId>
  82. <artifactId>junit-jupiter-api</artifactId>
  83. <version>5.9.3</version>
  84. <scope>test</scope>
  85. </dependency>
  86. <dependency>
  87. <groupId>junit</groupId>
  88. <artifactId>junit</artifactId>
  89. <version>4.13.2</version>
  90. <scope>test</scope>
  91. </dependency>
  92. </dependencies>
  93. <build>
  94. <plugins>
  95. <plugin>
  96. <groupId>org.springframework.boot</groupId>
  97. <artifactId>spring-boot-maven-plugin</artifactId>
  98. <configuration>
  99. <excludes>
  100. <exclude>
  101. <groupId>org.projectlombok</groupId>
  102. <artifactId>lombok</artifactId>
  103. </exclude>
  104. </excludes>
  105. </configuration>
  106. </plugin>
  107. </plugins>
  108. </build>
  109. </project>

Main:

  1. package com.example.demo.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ComponentScan;
  5. @SpringBootApplication
  6. @ComponentScan(basePackages = "com.example.demo") // Add the package of your component
  7. public class DemoApplication {
  8. public static void main(String[] args) {
  9. System.out.println("Demo");
  10. SpringApplication.run(DemoApplication.class, args);
  11. }
  12. }

我通过这里获取了演示代码,但我不明白为什么会打印两次。我不理解这为什么会发生。我尝试创建一个不同的类,但该类没有被调用,所以尝试了这种方式。

英文:

POM:

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  3. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  4. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  5. &lt;parent&gt;
  6. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  7. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  8. &lt;version&gt;3.1.2&lt;/version&gt;
  9. &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
  10. &lt;/parent&gt;
  11. &lt;groupId&gt;com.example.demo&lt;/groupId&gt;
  12. &lt;artifactId&gt;demo&lt;/artifactId&gt;
  13. &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  14. &lt;name&gt;demo&lt;/name&gt;
  15. &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
  16. &lt;properties&gt;
  17. &lt;java.version&gt;17&lt;/java.version&gt;
  18. &lt;/properties&gt;
  19. &lt;dependencies&gt;
  20. &lt;dependency&gt;
  21. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  22. &lt;artifactId&gt;spring-boot-starter-groovy-templates&lt;/artifactId&gt;
  23. &lt;/dependency&gt;
  24. &lt;dependency&gt;
  25. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  26. &lt;artifactId&gt;spring-boot-starter-jdbc&lt;/artifactId&gt;
  27. &lt;/dependency&gt;
  28. &lt;dependency&gt;
  29. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  30. &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt;
  31. &lt;/dependency&gt;
  32. &lt;dependency&gt;
  33. &lt;groupId&gt;org.flywaydb&lt;/groupId&gt;
  34. &lt;artifactId&gt;flyway-core&lt;/artifactId&gt;
  35. &lt;/dependency&gt;
  36. &lt;dependency&gt;
  37. &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt;
  38. &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt;
  39. &lt;version&gt;3.0.2&lt;/version&gt;
  40. &lt;/dependency&gt;
  41. &lt;dependency&gt;
  42. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  43. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  44. &lt;scope&gt;runtime&lt;/scope&gt;
  45. &lt;optional&gt;true&lt;/optional&gt;
  46. &lt;/dependency&gt;
  47. &lt;dependency&gt;
  48. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  49. &lt;artifactId&gt;spring-boot-docker-compose&lt;/artifactId&gt;
  50. &lt;scope&gt;runtime&lt;/scope&gt;
  51. &lt;optional&gt;true&lt;/optional&gt;
  52. &lt;/dependency&gt;
  53. &lt;dependency&gt;
  54. &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
  55. &lt;artifactId&gt;lombok&lt;/artifactId&gt;
  56. &lt;optional&gt;true&lt;/optional&gt;
  57. &lt;/dependency&gt;
  58. &lt;dependency&gt;
  59. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  60. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  61. &lt;scope&gt;test&lt;/scope&gt;
  62. &lt;/dependency&gt;
  63. &lt;dependency&gt;
  64. &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt;
  65. &lt;artifactId&gt;mybatis-spring-boot-starter-test&lt;/artifactId&gt;
  66. &lt;version&gt;3.0.2&lt;/version&gt;
  67. &lt;scope&gt;test&lt;/scope&gt;
  68. &lt;/dependency&gt;
  69. &lt;dependency&gt;
  70. &lt;groupId&gt;org.jetbrains&lt;/groupId&gt;
  71. &lt;artifactId&gt;annotations&lt;/artifactId&gt;
  72. &lt;version&gt;RELEASE&lt;/version&gt;
  73. &lt;scope&gt;compile&lt;/scope&gt;
  74. &lt;/dependency&gt;
  75. &lt;dependency&gt;
  76. &lt;groupId&gt;jakarta.annotation&lt;/groupId&gt;
  77. &lt;artifactId&gt;jakarta.annotation-api&lt;/artifactId&gt;
  78. &lt;version&gt;1.3.5&lt;/version&gt;
  79. &lt;/dependency&gt;
  80. &lt;dependency&gt;
  81. &lt;groupId&gt;org.junit.jupiter&lt;/groupId&gt;
  82. &lt;artifactId&gt;junit-jupiter-api&lt;/artifactId&gt;
  83. &lt;version&gt;5.9.3&lt;/version&gt;
  84. &lt;scope&gt;test&lt;/scope&gt;
  85. &lt;/dependency&gt;
  86. &lt;dependency&gt;
  87. &lt;groupId&gt;junit&lt;/groupId&gt;
  88. &lt;artifactId&gt;junit&lt;/artifactId&gt;
  89. &lt;version&gt;4.13.2&lt;/version&gt;
  90. &lt;scope&gt;test&lt;/scope&gt;
  91. &lt;/dependency&gt;
  92. &lt;/dependencies&gt;
  93. &lt;build&gt;
  94. &lt;plugins&gt;
  95. &lt;plugin&gt;
  96. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  97. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  98. &lt;configuration&gt;
  99. &lt;excludes&gt;
  100. &lt;exclude&gt;
  101. &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
  102. &lt;artifactId&gt;lombok&lt;/artifactId&gt;
  103. &lt;/exclude&gt;
  104. &lt;/excludes&gt;
  105. &lt;/configuration&gt;
  106. &lt;/plugin&gt;
  107. &lt;/plugins&gt;
  108. &lt;/build&gt;

</project>

Main

  1. package com.example.demo.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ComponentScan;
  5. @SpringBootApplication
  6. @ComponentScan(basePackages = &quot;com.example.demo&quot;) // Add the package of your component
  7. public class DemoApplication {
  8. public static void main(String[] args) {
  9. System.out.println(&quot;Demo&quot;);
  10. SpringApplication.run(DemoApplication.class, args);
  11. }
  12. }

Spring Boot生成的项目打印两次。

Spring Boot生成的项目打印两次。

I have the demo code by this but I'm wondering why I get print twice.
I don't understand why this is happening.
I tried creating a different class but that class is not being called so tried this way.

答案1

得分: 1

如果您删除以下部分:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-devtools</artifactId>
  4. </dependency>

那么 System.out.println("Demo"); 将只打印一次,这是因为:

使用 spring-boot-devtools 的应用程序将在类路径上的文件更改时自动重新启动。在使用集成开发环境(IDE)时,这可以是一个有用的功能,因为它可以快速反馈代码更改。默认情况下,类路径上指向文件夹的任何条目都将被监视以进行更改。

简而言之:
开发工具会自动刷新上下文,而不需要手动重启。

英文:

If you`ll remove the

  1. `&lt;dependency&gt;
  2. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  3. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  4. &lt;/dependency&gt;`

the System.out.println(&quot;Demo&quot;); will be printed just once, it happen because:

Applications that use spring-boot-devtools will automatically restart whenever files on the classpath change. This can be a useful feature when working in an IDE as it gives a very fast feedback loop for code changes. By default, any entry on the classpath that points to a folder will be monitored for changes.

In two words:
The devtools auto-refresh the context instead of restarting manually.

huangapple
  • 本文由 发表于 2023年8月10日 16:36:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/76873975.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定