kotlin - 使用 @Configuration 注释的类可以隐式子类化,并且不能是最终的
问题描述
我在 Kotlin 上创建了一个新项目来生成报告。知道 Kotlin 可以减少代码行数并且比 Java更安全,我使用 Spring-jpa 和 Kotlin 来完成这项工作。我所有的@Configuration
课程都有一个错误:
使用 @Configuration 注释的类可以隐式子类化,并且不能是最终的
仅供参考,我正在使用带有 Kotlin 1.3.50 的 maven 项目。据我所知,我知道 spring 确实是用于注入值的子类。
我如何让春天快乐,但在春天抱怨的每一节课上都不保持写作开放?
解决方案
您可能已经知道,默认情况下无法扩展 kotlin 类。为了支持继承,你必须添加open
关键字。此外,我们知道 Spring 注释处理需要标记为@Configuration
可以子类化的类。
在每个类中编写 open 的替代方法是添加一个插件:kotlin-allopen
前任 :
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
上面的方法是将 open 添加到以下注释中:@Component
、@Async
、@Transactional
和. 由于元注释支持用, ,或注释的类,因为这些注释是用 元注释的。@Cacheable
@SpringBootTest
@Configuration
@Controller
@RestController
@Service
@Repository
@Component
您可以在此处找到文档: https ://kotlinlang.org/docs/reference/compiler-plugins.html
推荐阅读
- javascript - mongooseDB 搜索/过滤不参考架构的数据
- c# - 将 System.Net.HttpWebRequest TransferEncoding 设置为 chunked 总是会导致异常
- mongodb - 如何仅获取不包含在另一条记录的数组中的记录
- angular - bsDatepicker 为 endDate 设置 minDate
- python - 显示值的条形图 -Seaborn 或 plt
- xamarin - vs2019+vs2022 避免在 Xamarin.Essentials.FeatureNotSupportedException 上中断
- java - Azure SQL 处理特殊字符
- asp.net-core - 如何使用 serilog 将异常记录到 appinsights?
- python - 如何为 Visual Studio Code (Python) 键入响应?
- angular - Angular:使用管道和mergemap时未陷入承诺错误