不使用框架,如何实现依赖注入
如题!
求教,谁给说说!
或者发个demo也行,先谢谢了.
[解决办法]
那就使用自定义框架吧
http://download.csdn.net/detail/s478853630/4263505
试试看
[解决办法]
http://syue.com/Software/JAVA/15753.html
http://only1.iteye.com/blog/733550
百度一下,很多的。
[解决办法]
String basePackage = element.attributeValue("basePackage");
if (null == basePackage || "".equals(basePackage)) {
throw new MvcException("配置文件[" + configPath[i] + "]中的context节点必须配置basePackage属性");
}
if (packageList.contains(basePackage)) {
throw new MvcException("多个context节点不能使用相同的basePackage属性值");
}
packageList.add(basePackage);
} else if ("bean".equals(element.getName())) {
String beanName = element.attributeValue("name");
String className = element.attributeValue("class");
if (null == beanName || null == className || "".equals(beanName) || "".equals(className)) {
throw new MvcException("配置文件[" + configPath[i] + "]中的bean节点必须配置name属性和class属性");
}
if (Settled.MODEL_BEAN_CONFIG_MAP.keySet().contains(beanName)) {
throw new MvcException("名称为[" + beanName + "]的javabean已经存在,不能重复设置");
}
ModelBean bean = new ModelBean();
bean.setName(beanName);
bean.setClassName(className);
Object object = Class.forName(className).newInstance();
if (Settled.JDBC_CONFIG_CLASS.equals(className)) {
bean.setObject(ModelBeanWeb.getWeb().loadJdbcProperty(configPath[i], object, element.elementIterator()));
Settled.JDBC_CONFIG_BEAN_MAP.put(beanName, bean);
} else {
bean.setObject(ModelBeanWeb.getWeb().loadProperty(configPath[i], object, element.elementIterator()));
}
Settled.MODEL_BEAN_CONFIG_MAP.put(beanName, bean);
} else {
throw new MvcException("配置文件[" + configPath[i] + "]中有不能解析的配置<" + element.getName() + "/>");
}
}
}
}
ModelBeanWeb.getWeb().loadPackageBean(packageList);
ModelBeanWeb.getWeb().loadForeignObject();
System.out.print("load succeed jdbcEntitys: [");
for (String str : Settled.JDBC_CONFIG_BEAN_MAP.keySet()) {
JdbcConfig config = (JdbcConfig) Settled.JDBC_CONFIG_BEAN_MAP.get(str).getObject();
for (String s : config.getEntityMap().keySet()) {
System.out.print(s + " ");
}
}
System.out.println("]");
System.out.print("load succeed beans: [");
for (String str : Settled.MODEL_BEAN_CONFIG_MAP.keySet()) {
System.out.print(str + " ");
}
for (String str : Settled.MODEL_BEAN_CODE_MAP.keySet()) {
System.out.print(str + " ");
}
System.out.println("]");
System.out.print("load succeed actions: [");
for (String str : Settled.ACTION_MAP.keySet()) {
System.out.print(str + " ");
}
System.out.println("]");
} catch (Exception e) {
e.printStackTrace();}
}
/**
* get提交
* @param request
* @param response
* @throws ServletException, IOException
* */
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ControlActionWeb.getWeb().execute(request, response);
}
/**
* post提交
* @param request
* @param response
* @throws ServletException, IOException
* */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ControlActionWeb.getWeb().execute(request, response);
}
}
[解决办法]
依赖注入的三种方式,接口注入,构造器注入,get/set方法注入。按原理做就可以了。
[解决办法]
反射创建实例后,强制转换成接口声明的类就行了,什么框架也不用。
[解决办法]
通过反射机制。。只要知道类名和包名,就可以new出一个对象出来。。
[解决办法]
自定义一个ClassPathXmlApplicationContext,在这个类里面通过dom解析xml获取对应节点的id和class,然后通过反射生成对象,把生成的对象都放到map里面去,key是id,value是生成的对象,再获取property的id和class,设置关系。
[解决办法]
property是name和ref.