新建接口UserService
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午1:39:59
* 类说明
*/
package com.sumeng.server;
/**
* @author Administrator
*
*/
public interface UserService {
public void save();
}
新建UserServiceImpl
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午1:39:07
* 类说明
*/
package com.sumeng.serverImpl;
import com.sumeng.dao.UserDao;
import com.sumeng.server.UserInfo;
import maven.BeanFactroy;
/**
* @author Administrator
*
*/
public class UserServerImpl implements UserInfo{
//这里UserDao相当bean.proper中key所队形的value
private UserDao user = (UserDao)BeanFactroy.getBean("userDao");
@Override
public void save() {
user.save();
}
}
新建接口UserDao
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午1:44:19
* 类说明
*/
package com.sumeng.dao;
/**
* @author Administrator
*
*/
public interface UserDao {
public void save();
}
新建UserDaoImpl
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午1:43:45
* 类说明
*/
package com.sumeng.daoImpl;
import com.sumeng.dao.UserDao;
/**
* @author Administrator
*
*/
public class UserDaoImpl implements UserDao{
/* (非 Javadoc)
* @see com.sumeng.dao.UserDao#save()
*/
@Override
public void save() {
System.out.println("用户保存方法!!!");
}
}
创建文件bean.properties
userService = com.sumeng.serverImpl.UserServerImpl
userDao = com.sumeng.daoImpl.UserDaoImpl
新建BeanFactroy(多列模式)
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午2:02:22
* 类说明
*/
package maven;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author Administrator
*
*/
public class BeanFactroy {
private static Properties pr;
static{
pr = new Properties();
InputStream in = BeanFactroy.class.getClassLoader().getResourceAsStream("bean.properties");
try {
pr.load(in);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
//获取对象
public static Object getBean(String beanName){
//根据beanNam获取全类名
String className = pr.getProperty(beanName);
//获取到全类名之后再通过反射创建
Object obj = null;
try {
Class clazz = Class.forName(className);//要有无参构造方法
obj = clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
新建BeanFactroy(单列模式)
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午2:02:22
* 类说明
*/
package maven;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* @author Administrator
*
*/
public class BeanFactroy {
private static Properties pr;
private static Map<String,Object> beans;
static{
pr = new Properties();
InputStream in = BeanFactroy.class.getClassLoader().getResourceAsStream("bean.properties");
try {
pr.load(in);
//加载完配置文件后 直接将配置文件中的信息创建为对象 存入到map中
beans = new HashMap<String,Object>();
//存储配置文件中的key
Set<Object> keySet = pr.keySet();
for (Object obj : keySet) {
//配置文件中所有的key
String key = (String)obj;
//根据key获取到value
String className = pr.getProperty(key);
//得到字节码文件
Class clazz = Class.forName(className);
//创建对象
Object bean = clazz.newInstance();
beans.put(key, bean);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
//获取对象
public static Object getBean(String beanName){
return beans.get(beanName);
}
}
测试类
/**
* @author 作者 Your-Name:
* @version 创建时间:2019年8月26日 下午1:33:25
* 类说明
*/
package maven;
import com.sumeng.server.UserInfo;
import com.sumeng.serverImpl.UserServerImpl;
/**
* @author Administrator
*
*/
public class JdbcDemo {
public static void main(String[] args) {
UserInfo user = (UserInfo)BeanFactroy.getBean("userService");
user.save();
}
}
结果图