我想从YAML向Spring上下文注入一些值。YAML的结构类似,因此我不想重复代码,但Spring启动失败,因为它无法将值注入占位符。
请注意我的应用程序。属性
:
server.port=8084
activeProfile=dev
autoAgents.supplier.id=0
autoAgents.supplier.name=test
autoAgents.supplier.serviceType=REST
autoAgents.supplier.authType=1
autoAgents.supplier.adapter=test
autoAgents.supplier.username=test
autoAgents.supplier.secret=test
autoAgents.supplier.apiPassword=12345
autoAgents.client.id=1
autoAgents.client.name=test
autoAgents.client.serviceType=REST
autoAgents.client.authType=1
autoAgents.client.adapter=
autoAgents.client.username=test
autoAgents.client.secret=test
autoAgents.client.apiPassword=12345
然后我将这些值注入YAML,application.yml
activeProfile: ${activeProfile}
autoAgents:
supplier:
isSupplier: true
meta:
id: ${autoAgents.supplier.id}
name: ${autoAgents.supplier.name}
serviceType: ${autoAgents.supplier.serviceType}
authType: ${autoAgents.supplier.authType}
adapter: ${autoAgents.supplier.adapter}
credentials:
username: ${autoAgents.supplier.username}
secret: ${autoAgents.supplier.secret}
apiPassword: ${autoAgents.supplier.apiPassword}
client:
isSupplier: false
meta:
id: ${autoAgents.client.id}
name: ${autoAgents.client.name}
serviceType: ${autoAgents.client.serviceType}
authType: ${autoAgents.client.authType}
adapter: ${autoAgents.client.adapter}
credentials:
username: ${autoAgents.client.username}
secret: ${autoAgents.client.secret}
apiPassword: ${autoAgents.client.apiPassword}
然后我将其导入到配置属性上下文:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
@Data
public class TwoConnectConfigurationProperties {
private String activeProfile;
@Value("${autoAgents.supplier}")
private AutoAgentDup supplier;
@Value("${autoAgents.client}")
private AutoAgentDup client;
}
但是< code > @ Value(" $ { auto agents . supplier } ")不起作用。
请建议。
为什么需要“嵌套属性”?如果只想在应用程序中访问它们,只需从 .properties 文件中获取值并将其作为值填充到 .yml 文件中即可。例如:配置文件:开发
,或
autoAgents:
client:
id: 1
可以从代码访问 .yml 文件中的属性,方法与从 .properties 文件中访问的方式相同。
您的问题在于您如何访问属性。当您使用“@Configuration属性”时,您必须指定要使用的属性(例如@ConfigurationProperties(“autoAgents.client”)
)。
如前所述,将值注入yaml是没有意义的,您可以直接使用值创建“application.yaml”。只需删除“.properies”文件即可。
您可能想看看如何轻松地将带有公共后缀的属性注入到bean中。这里有很好的描述:https://www . bael dung . com/configuration-properties-in-spring-boot
你会有一个豆子:
@Configuration
@ConfigurationProperties(prefix = "autoAgents.supplier")
public class AutoAgentSupplierProperties {
private long id;
private String name;
// ... rest of the properies properties
}
您可能希望“auto.agent”客户端也是如此。
如果您想避免代码重复,您可以拥有一个具有公共属性的bean。使用2个新类扩展该类。一个用于供应商,一个用于代理-并用
@配置属性
注释。
我在Java spring-boot应用程序的src/main/resources中定义了以下application-errors.yml文件: 请注意,我尝试了两种不同的格式来指定属性。 我通过@Configuration注释类中的以下Bean加载该属性文件: 我看到属性是通过Spring环境变量加载的,但不是我所期望的模式。调试时,我可以看到加载的属性文件的源包含以下值: 看起来 yaml 文
我有一个名为CommonConfig的配置类,到目前为止它工作得很好… 以及与之配套的Yaml属性文件: 我的问题开始于当我想把一个映射到子B中时: 我尝试在SubB类中添加一个简单的映射声明: 当我运行这个时,所有其他属性都在配置中,但映射是空的。我还尝试不初始化映射,但它保持为空。 我的SpringBootApplication类以前只使用了一个注释就可以很好地工作。基于其他一些StackOv
假设我有那些DTO: 在我的存储库中,我使用这些DTO作为投影进行查询: 我可以使用这个repo很好地访问ForumDTO中的id、name,但对于lasthread,它只返回null。我试过作为最后一个线程。Id、lastThread\u Id、lastThreadId均无效。
问题内容: 我需要定义一个切入点,该切入点触发使用自定义注释注释的spring服务的所有方法的执行。我想定义切入点的注释将在另一个注释上。 然后该服务将被注释如下 我尝试使用以下切入点定义,但是仅当@Y在服务本身上时才有效,这意味着它看不到注释在@X上 问题答案: 我在应用程序中有这个确切的需求。我找到了这个答案,但不满意无法完成。 经过更多搜索之后,我发现了用于AspectJ / Spring切
主要内容:构造函数注入,setter 注入,短命名空间注入所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)。 Spring 主要通过以下 2 种方式实现属性注入: 构造函数注入 setter 注入(又称设值注入) 构造函数注入 我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。 使用构造函数实现属性注入大致步骤如下: 在 Bean 中添加一个有参构造函数,构造
我正在使用spring boot开发REST API。我想在我的项目中使用git。在文件应用程序中。属性我有数据库Url、用户名和密码,我不想在git上推送它们。我不知道如何创建包含数据库配置的文件,以及如何将这些配置注入应用程序。属性。 应用属性