Às vezes, precisamos ler diretamente o arquivo de configuração de propriedades no código da mola, então como fazemos isso? Vamos dar uma olhada no conteúdo específico abaixo.
Todos sabemos que a primavera pode ler os valores nas propriedades em @value, basta configurá -los no arquivo de configuração
org.springframework.beans.factory.config.propertyplaceholderConfigurer
<bean id = "PropertyConfigurer"> <Propriedade name = "Location"> <Value> ClassPath: config.properties </value> </ouuse> </i bean>
Então, quando você precisa usá -los para obter os valores medianos das propriedades, você pode usá -lo assim
@Value ("$ {sql.name}") private string sqlname;Mas há um problema com isso. Toda vez que uso o valor no arquivo de configuração, tenho que declarar uma variável local. Existe uma maneira de ler diretamente os valores no arquivo de configuração usando o código?
A resposta é reescrever o PropertLusholdConfigurer
classe pública PropertyPlaceHolder estende a propriedade de propriedadesConfigurer {Map estático privado <string, string> PropertyMap; @Override Protected void ProcessProperties (ConfigurableListableBeanFactory BeanFactoryToprocess, Properties Props) lança beansexception {super.processproperties (BeanFactoryToprocess, Props); PropertyMap = new Hashmap <String, String> (); para (chave do objeto: props.KeySet ()) {string keystr = key.toString (); String value = props.getProperty (KEYSTR); PropertyMap.put (KEYSTR, valor); }} // Método estático para acessar propriedades de contexto Public Static Object getProperty (nome da string) {return PropertyMap.get (nome); }}No arquivo de configuração, use a classe acima, em vez de PropertyPlaceHoldConfigurer
<bean id = "PropertyConfigurer"> <Propriedade name = "Location"> <Value> ClassPath: config.properties </value> </ouuse> </i bean>
Dessa forma, ele pode ser obtido diretamente no código programando
PropertyPlaceHolder.getProperty ("sql.name");Se forem vários arquivos de configuração, configure o atributo Local
<bean id = "PropertyConfigurer"> <Propriedade name = "ignoreReSourceNotFound" value = "true"/> <names name = "locations"> <lista> <dalue> arquivo: ./ jdbc.properties </value> <Value> arquivo: ./ module.config.properties </value> <Value> Classpath> ClassPath> Classpath> Classpath>: <Value> ClassPath*:*. Config.Properties </value> </list> </Property> </i bean>
Resumir
O exposto acima é sobre o código da primavera para ler as instâncias de arquivo de análise de propriedades. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
Análise do processo de instanciação da primavera e exemplos de código completo
Criação do método da fábrica de primavera (instandardização) Código da instância do feijão
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!