Spring_Q_collect

来源:互联网 发布:mac安装战网失败 编辑:程序博客网 时间:2024/06/05 17:24

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@Documentedpublic @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明显要简单,所以更倾向于注解配置方式。

1 0
原创粉丝点击