Spring_Q_collect
2016-03-25 22:32
375 查看
1.IOC是什么,它有什么作用和意义?
Inversion of Control,控制反转,是一种设计思想,由IoC容器控制对象的创建。传统的程序中,我们主动控制去直接获取依赖对象,这是正转,而反转就是由容器来帮忙创建及注入依赖对象,也就是说依赖对象的获取被反转了。
IoC能指导我们设计出松耦合更优良的程序,使程序的整个体系结构变得更灵活。应用程序由主动变被动,等待IoC容器创建并注入其所需要的资源。
2.简单描述IoC与简单工厂的差别,特别是对客户端代码来说
假设有两个类A和B,A中存在对B的调用,在客户端调用A时,如果使用IoC,在A类代码中将不需要嵌入任何工厂模式的代码,IoC彻底解耦了A和B之间的关系,但是IoC的代价就是需要客户端进行A和B之间联系的组装,也就是要配置xml文件,将联系进行了转移。
3.注解是什么,它的作用是什么,有哪些常见的用法?
注解也叫元数据,是一种代码级别的说明,声明在包、类、字段、方法、局部变量和方法参数等前面,用来对这些元素进行说明,注释。从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。
它的作用,可以通过代码里标识的注解来生成文档并跟踪代码中的依赖性、对代码进行分析、让编译器能实现基本的编译检查。
Java中内置了三种标准注解:
Java中还提供自定义注解,负责新注解的创建:
其中,上面4行注解的注解称为元注解
@Target注解的作用域:
CONSTRUCTOR 构造方法声明 FIELD字段声明 Local_VARIABLE局部变量声明 METHOD 方法声明 PACKAGE 包声明 PARAMETER参数声明 TYPE 类接口
@Retention生命周期
SOURCE 只在源码显示CLASS 编译时显示RUNTIME运行时存在,通过反射读取
@Inherited 表示允许子类继承
@Documented生成javadoc时会包含注解
4.xml和注解两种配置方式,你更倾向于哪一种,为什么?
xml文件的配置降低了耦合,对配置文件的修改不需要对文件进行修改和重编译,通过配置文件能够清晰的表明各个对象之间的关系及调用关系,但是当业务过大时,xml文件太复杂,而且在java文件和xml文件中来回切换,有点难受;虽然注解的方式,在修改之后要对工程进行重编译,对象之间的关系也不是那么清晰,但是注解只需要使用java的反射机制,而且在编译期间就能知道使用的是否正确,相比较xml明显要简单,所以更倾向于注解配置方式。
Inversion of Control,控制反转,是一种设计思想,由IoC容器控制对象的创建。传统的程序中,我们主动控制去直接获取依赖对象,这是正转,而反转就是由容器来帮忙创建及注入依赖对象,也就是说依赖对象的获取被反转了。
IoC能指导我们设计出松耦合更优良的程序,使程序的整个体系结构变得更灵活。应用程序由主动变被动,等待IoC容器创建并注入其所需要的资源。
2.简单描述IoC与简单工厂的差别,特别是对客户端代码来说
假设有两个类A和B,A中存在对B的调用,在客户端调用A时,如果使用IoC,在A类代码中将不需要嵌入任何工厂模式的代码,IoC彻底解耦了A和B之间的关系,但是IoC的代价就是需要客户端进行A和B之间联系的组装,也就是要配置xml文件,将联系进行了转移。
3.注解是什么,它的作用是什么,有哪些常见的用法?
注解也叫元数据,是一种代码级别的说明,声明在包、类、字段、方法、局部变量和方法参数等前面,用来对这些元素进行说明,注释。从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。
它的作用,可以通过代码里标识的注解来生成文档并跟踪代码中的依赖性、对代码进行分析、让编译器能实现基本的编译检查。
Java中内置了三种标准注解:
@Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。 @SuppressWarnings,关闭不当编译器警告信息
Java中还提供自定义注解,负责新注解的创建:
@Target({ElementType.Method,ElementType.Type}) @Retention(RetentionPolicy.RunTime) @Inherited @Documented public @interface Description{ String desc(); String author(); int age() default 18; }
@interface关键字来定义注解;成员以无参无异常方式声明;可以用default为成员指定一个默认值;成员类型是受限的,合法的成员类型包括原始类型及String、Class、Annotation、Enumeration;如果注解只有一个成员,则该成员名必须取名为value(),在使用时可以忽略成员名和赋值号;注解类可以没有成员,没有成员的注解称为标识注解。
其中,上面4行注解的注解称为元注解
@Target注解的作用域:
CONSTRUCTOR 构造方法声明 FIELD字段声明 Local_VARIABLE局部变量声明 METHOD 方法声明 PACKAGE 包声明 PARAMETER参数声明 TYPE 类接口
@Retention生命周期
SOURCE 只在源码显示CLASS 编译时显示RUNTIME运行时存在,通过反射读取
@Inherited 表示允许子类继承
@Documented生成javadoc时会包含注解
4.xml和注解两种配置方式,你更倾向于哪一种,为什么?
xml文件的配置降低了耦合,对配置文件的修改不需要对文件进行修改和重编译,通过配置文件能够清晰的表明各个对象之间的关系及调用关系,但是当业务过大时,xml文件太复杂,而且在java文件和xml文件中来回切换,有点难受;虽然注解的方式,在修改之后要对工程进行重编译,对象之间的关系也不是那么清晰,但是注解只需要使用java的反射机制,而且在编译期间就能知道使用的是否正确,相比较xml明显要简单,所以更倾向于注解配置方式。
相关文章推荐
- 【JAVA开发之IO流1-3】IO流之缓冲流
- Java内存分配
- super,this的区别和使用
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- 关于struts2中传入中文参数然后显示到页面出现乱码
- Java——URLEncoder和URLDecoder
- 《Java程序设计基础》 第6章手记
- Spring IoC — 基于注解的配置
- java 之 helloworld
- idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
- Spring boot配置cache
- Spring boot配置cache
- Java基础 搭建环境 安装JDK 配置环境变量
- java布局学习(新)
- Java web.xml配置 servlet
- Java中equals和==的区别
- java集合学习
- Javaweb实训项目中使用到的ajax
- Java设计模式之“工厂方法模式”
- 20145214 《Java程序设计》第4周学习总结