ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring bean工厂模式

2022-05-27 14:34:21  阅读:180  来源: 互联网

标签:properties java spring beanName 工厂 util bean import public


#1.==============配置文件
bean.properties
#先写dao,再写service
UserDao=com.ghy.dao.impl.UserDaoImpl
UserService=com.ghy.service.impl.UserServiceImpl



#2.==============配置文件
import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

/**
* @author ghy
* @version 1.0
* @date 2021-09-13
* @userd 使得Properties有序
*/
public class OrderedProperties extends Properties {

private static final long serialVersionUID = 4710927773256743817L;

private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();

@Override
public Enumeration<Object> keys() {
return Collections.<Object> enumeration(keys);
}

@Override
public Object put(Object key, Object value) {
keys.add(key);
return super.put(key, value);
}

@Override
public Set<Object> keySet() {
return keys;
}

/**
* 返回按照properties文件存储顺序的名称集合
* @return
*/
@Override
public Set<String> stringPropertyNames() {
Set<String> set = new LinkedHashSet<String>();

for (Object key : this.keys) {
set.add((String) key);
}

return set;
}
}




#3.==============BeanFctory
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
* Spring bean 工厂模式开发
* @author ghy
* @version 1.0
* @date 2021-12-28
**/
public class BeanFactory {

private static Map<String, Object> ioc = new HashMap<>();
private static Properties properties = new OrderedProperties();

static {
try {
properties.load(BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties"));
//beanNames : 是无序的
Set<String> beanNames = properties.stringPropertyNames();
for (String beanName : beanNames) {
if(null != beanName && !beanName.trim().equals("")) {
Class<?> clazz = Class.forName(properties.getProperty(beanName));
if(null != clazz) {
Object instance = clazz.newInstance();
if(null != instance) {
ioc.put(beanName, instance);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static Object getBean(String beanName){
return ioc.get(beanName);
}

}




标签:properties,java,spring,beanName,工厂,util,bean,import,public
来源: https://www.cnblogs.com/cqwiu/p/16317488.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有