对于很多学习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工具网。
推荐阅读: