「java实现ioc」java实现异步的几种方法
本篇文章给大家谈谈java实现ioc,以及java实现异步的几种方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java实现spring的ioc
- 2、Spring实现ioc是基于何种底层java技术?
- 3、求大神,java中IOC具体是个什么意思
- 4、java实现Spring的IOC机制
- 5、Java IOC 如何应用
- 6、java中的Spring里面的ioc和aop有什么区别?他们都有什么用?
如何用java实现spring的ioc
传统方式创建对象
new Object();
Spring ioc 是读取xml( 此处暂不考虑注解方式)
读取xml,根据参数获取bean标签,最终获取class路径,然后通过反射创建实例。
相关技术
1xml及解析(关键词可以搜索下schema 和jaxb)
2java发射
Spring实现ioc是基于何种底层java技术?
基于java的反射机制 , 在spring初始化的时候 , 初始化所有bean , 然后在应用程序需要的时候 , 通过反射机制来获取 , 当然 , 这是粗浅表象的说法 , spring中还做了很多其他处理
求大神,java中IOC具体是个什么意思
IOC(Inverse of Control):控制反转。
1、本来程序使用哪一个bean是在程序中指定(由程序员具体指定),而使用Spring以后我们将具体的配置写在xml中,由xml来控制;
2、本来类的实例化需要通过new XX() 来实例化一个对象,现在通过spring容器来帮忙实例化类的对象
java实现Spring的IOC机制
你说要把实现代码贴给你还是干吗啊?简单来讲,这个机制并不是很难的,将XML读入之后放到Map中,当你需要什么实例或者注入的时候,根据反射机制来生成。在XML里面都说明具体的实现类,com.test.test,这样就可以用反射机制生成test实例了,然后在赋给相关的变量即可。
当然,Spring的机制一定要比上面说的负责的多,包括依赖顺序的一大堆问题也需要解决
Java IOC 如何应用
二、 IOC使用的背景
在我们日常的设计中,类与类之间存在着千丝万缕的关系,如果两个类存在着强耦合关系,那么在维护时,一个类的修改很可能会牵动另一个类的关联修改,从而使得我们的维护工作步履维艰。下面让我们来看这样的一个强耦合反面例子。
首先我们建立一个Chinese.java类,该类的sayHelloWorld(String name)方法,用中文对名为name的人问好,其内容如下:
package org.amigo.reflection;
/**
*中国人类.
*@authora href="mailto:xiexingxing1121@126.com"AmigoXie/a
*Creationdate:2007-10-2-上午10:37:17
*/
publicclass Chinese {
/**
*用中文对某人问好.
*@paramname姓名
*/
publicvoid sayHelloWorld(String name) {
String helloWorld = "你好," + name;
System.out.println(helloWorld);
}
}
下面我们接着建立一个American.java类,该类的sayHelloWorld(String name)方法,用英文对名为name的人问好,其内容如下:
package org.amigo.reflection;
/**
*美国人类.
*@authora href="mailto:xiexingxing1121@126.com"AmigoXie/a
*@version1.0
*Creationdate:2007-10-2-上午10:41:27
*/
publicclass American {
/**
*用英文对某人问好.
*@paramname姓名
*/
publicvoid sayHelloWorld(String name) {
String helloWorld = "Hello," + name;
System.out.println(helloWorld);
}
}
最后我们编写一个测试类对这两个类的sayHelloWorld(String name)方法进行测试,下面是该类的内容:
package org.amigo.reflection;
/**
*HelloWorld测试.
*@authora href="mailto:xiexingxing1121@126.com"AmigoXie/a
*Creationdate:2007-10-2-上午10:45:13
*/
publicclass HelloWorldTest {
/**
*测试Chinese和American的sayHelloWorld()方法.
*@paramargs
*@authora href="mailto:xiexingxing1121@126.com"AmigoXie/a
*Creationdate:2007-10-2-上午10:43:51
*/
publicstaticvoid main(String[] args) {
Chinese chinese = new Chinese();
chinese.sayHelloWorld("阿蜜果");
American american = new American();
american.sayHelloWorld("Amigo");
}
}
观察HelloWorldTest我们可以很清楚的看到,该类与Chinese.java类和American.java类都存在强耦合关系。
上面的例子让我们想到的是在N年以前,当我们需要某个东西时,我们一般是自己制造。但是当发展到了一定的阶段后,工厂出现了,我们可以工厂中购买我们需要的东西,这极大的方便了我们。在上例中,我们都是通过new来创建新的对象,在开发中,这种强耦合关系是我们所不提倡的,那么我们应该如何来实现这个例子的解耦呢?我们接着想到了使用工厂模式,我们需要新建一个工厂类来完成对象的创建,并采用依赖接口的方式,此时需要对代码进行如下修改:
首先建立接口类Human.java,其内容如下。
package org.amigo.reflection;
/**
* 人类接口类.
* @author a href="mailto:xiexingxing1121@126.com"AmigoXie/a
* Creation date: 2007-10-2 - 上午11:04:56
*/
public interface Human {
/**
* 对某人问好.
* @param name 姓名
*/
public void sayHelloWorld(String name);
}
并将American.java类和Chinese.java类改为实现该接口,即类头分别改成:public class American implements Human和public class Chinese implements Human。
接着编写HumanFactory.java工厂类,其内容为:
package org.amigo.reflection;
/**
* 工厂类.
* @author a href="mailto:xiexingxing1121@126.com"AmigoXie/a
* Creation date: 2007-10-2 - 上午11:09:30
*/
public class HumanFactory {
/**
* 通过类型字段获取人的相应实例
* @param type 类型
* @return 返回相应实例
*/
public Human getHuman(String type) {
if ("chinese".equals(type)) {
return new Chinese();
} else {
return new American();
}
}
}
最后我们还需要修改测试类HelloWorld.java类,修改后的内容如下:
package org.amigo.reflection;
/**
* HelloWorld测试.
* @author a href="mailto:xiexingxing1121@126.com"AmigoXie/a
* Creation date: 2007-10-2 - 上午10:45:13
*/
public class HelloWorldTest {
/**
* 测试sayHelloWorld()方法.
* @param args
* @author a href="mailto:xiexingxing1121@126.com"AmigoXie/a
* Creation date: 2007-10-2 - 上午10:43:51
*/
public static void main(String[] args) {
HumanFactory factory = new HumanFactory();
Human human1 = factory.getHuman("chinese");
human1.sayHelloWorld("阿蜜果");
Human human2 = factory.getHuman("american");
human2.sayHelloWorld("Amigo");
}
}
观察此例我们可以看到,该类不再与具体的实现类Chinese和American存在耦合关系,而只是与它们的接口类Human存在耦合关系,具体对象的获取只是通过传入字符串来获取,很大程度上降低了类与类之间的耦合性。
java中的Spring里面的ioc和aop有什么区别?他们都有什么用?
IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。Spring容器负责将这些联系在一起。也就是说,Spring的IOC负责管理各种对象的创建、清除以及它们之间的联系。AOP是指面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。一般用于事务管理、权限控制、错误处理等各种业务中共同性的东西。
关于java实现ioc和java实现异步的几种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。