java常见面试题:有哪些不同类型的依赖注入方式?

BSO 2020-10-29 15:54:36 java常见问答 5405

对于很多学习java的人来说,最终目的都是通过java获得一份比较不错的工作。今天就来为大家介绍一些与java相关的面试题的有关内容,一起来了解一下吧。

问题一:有哪些不同类型的IOC(依赖注入)方式? 解释说明下

答:1.Setter方法注入

属性需要封装Setter方法

2.构造方法注入,代码如下所示:

public UserServiceImpl(UserDao dao)
{
    this.dao = dao;
}
<bean id="service" class="service.impl.UserServiceImpl">
<constructor-arg><ref bean="dao"/></constructor-arg>
</bean>

3.p命名空间注入

p命名空间注入也是基于Setter方法的一种注入方式,他需要在xml文件里引用命名空间

xmlns:p="http://www.springframework.org/schema/p"

在bean节点的属性里使用p:属性名="值"或者p:属性名-ref="Bean的id"的方式进行注入的

4.注解注入

@Resource或者@Autowire

@Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义

1. @Autowired默认byType自动注入,如果实例结果不唯一,那么将会抛出异常

2. @Resource默认按byName自动注入

但是@Resource有两个属性是比较重要的,分别是name和type;

如果使用name属性,则使用byName的自动注入策略; .

而使用type属性时则使用byType自动注入策略;

问题二:最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

1.xml映射文件中的namespace值就是Dao接口的全限名,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement

2.Dao接口里的方法,是不能重载的,因为是全限名+方法名的,保存和寻找策略。

3. Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

以上就是关于以上就是关于java常见面试题:有哪些不同类型的依赖注入方式的主要内容了。如果你对java知识感兴趣,想要了解更多Java面试题相关内容,敬请关注奇Q工具网。

推荐阅读:

java中SSM框架面试题,spring的使用

java中SSM框架面试题,IOC和AOP底层实现原理

java中SSM框架面试题,spring的常用注解解释