分享 : 从底层目录读取自己写的配置文件类

   

public class ConfigHelper
    {
        private static readonly string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.xml");

        public static string GetValueByKey(string key, string node = "appSettings")
        {
            string value = "";
            if (File.Exists(path))
            {
                try
                {
                    var doc = new XmlDocument();
                    doc.Load(path);
                    XmlNode xmlNode = doc.SelectSingleNode(node);
                    if (xmlNode != null)
                    {
                        string n = xmlNode.OuterXml.Trim();
                        var xml = XElement.Parse(n);
                        var dic = xml.Descendants("add").ToDictionary(x => x.Attribute("key").Value, x => x.Attribute("value").Value);
                        if (dic.Count > 0)
                        {
                            if (dic[key] != "")
                            {
                                value = dic[key];
                            }
                        }
                        return value;
                    }

                }
                catch (Exception ex)
                {
                }
            }
            return "";
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring作为一个开源框架,其底层代码非常复杂,涉及到的知识面也非常广泛,因此要想完整地用Java出Spring底层代码是非常困难的。不过,我们可以简单介绍一下Spring的核心模块和一些主要的。 Spring的核心模块包括: 1. Core Container:提供了Spring框架的基本功能,包括控制反转(IoC)和依赖注入(DI)等。 2. Data Access/Integration:提供了与各种数据访问技术和集成技术的集成支持,包括JDBC、ORM、JMS等。 3. Web:提供了与Web应用程序的集成支持,包括MVC、RESTful Web Services等。 4. AOP:提供了面向切面编程的支持。 下面以Core Container为例,给出一个简单的代码实现: ``` public interface BeanFactory { Object getBean(String name) throws Exception; } public class XmlBeanFactory implements BeanFactory { private final Map<String, Object> beans; public XmlBeanFactory(Resource resource) throws Exception { beans = new HashMap<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(resource.getInputStream()); NodeList nodeList = document.getElementsByTagName("bean"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); NamedNodeMap attributes = node.getAttributes(); String beanName = attributes.getNamedItem("id").getNodeValue(); String className = attributes.getNamedItem("class").getNodeValue(); Class<?> clazz = Class.forName(className); Object instance = clazz.newInstance(); beans.put(beanName, instance); } } @Override public Object getBean(String name) throws Exception { Object bean = beans.get(name); if (bean == null) { throw new Exception("No bean found with name " + name); } return bean; } } ``` 上述代码实现了一个简单的BeanFactory,它可以从一个XML配置文件读取bean的配置信息,并根据配置信息创建bean实例。当需要获取bean实例时,只需要调用getBean方法即可。 需要注意的是,上述代码仅仅是Spring底层代码的冰山一角,Spring框架的其他模块和都非常复杂,需要深入学习和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写啊靠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值