您的位置:首页 > 编程语言 > Java开发

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中内置了三种标准注解:

@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明显要简单,所以更倾向于注解配置方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: