spring 静态接口注入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 静态接口注入相关的知识,希望对你有一定的参考价值。
java代码中的静态接口:
private static SiteService siteService;
public static SiteService getSiteService()
return siteService;
public static void setSiteService(SiteService siteService)
CreateLuceneAction.siteService = siteService;
xml文件:
<bean id="searchServiceAction" class="****************" scope="prototype">
<property name="siteService">
<ref bean="siteService"/>
</property>
</bean>
<!--↑=============ACTION==============↑-->
<!--↓=============SERVICE=============↓-->
<bean id="siteService" class="******">
<property name="siteDao">
<ref bean="siteDao"/>
</property>
</bean>
<!--↑=============SERVICE=============↑-->
<!--↓=============DAO=============↓-->
<bean id="siteDao" class="***********************">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--↑=============DAO=============↑-->
老是出现:Invalid property 'siteService' of bean class [************]: No property 'siteService' found如果非静态的就可以
所以没必要是静态的
如果是接口你可以是静态的 参考技术A 只有在调用的时候才将对象实例化。也可以说 “注入” 实例化,让对象有生命。
spring 其实就是封装了各种模式:比如工厂模式。
对方法 做了接口等封装,方便调用和以后的管理。 参考技术B 说错了,sorry,LocalSessionFacoryBean不是实现sessionFactory的接口,这里想当然的以为sessionFactory是被 LocalSessionFacoryBean实现的,去研读了一下代码发现
LocalSessionFactoryBean继承了AbstractSessionFactoryBean这个抽象类,这个类实现了org.springframework.beans.factory.FactoryBean接口, spring在装配的时候, 如果发现实现了org.springframework.beans.factory.FactoryBean接口, 就会使用FactoryBean#getObject() 方法返回的对象装配,
这个抽象类两个重要的实现org.hibernate.SessionFactory的方法如下:
//在产生类实例后生成sessionFacotry实例,注入到这个类的sessionFactory中
public void afterPropertiesSet() throws Exception
SessionFactory rawSf = buildSessionFactory();
this.sessionFactory = wrapSessionFactoryIfNecessary(rawSf);
//因为实现FactoryBean接口这个类注入的时候通过getObject()注入的是sessionFactory组件,而不是这个LocalSessionFactoryBean的实例
public Object getObject()
return this.sessionFactory;
---------------------------------------------------------------------
楼主去研读一下sessionFactory的代码,其实里面都是空方法,为什么呢,因为他是个接口,你不结合Spring直接用 Hibernate的时候,sessionFactory用的都是SessionFacotryImpl类的实例(因为接口不能实例化)同理,org.springframework.orm.hibernate3.LocalSessionFactoryBean也是这个接口的实现所以可以注入到sessionFactory中
______________________问题分割线______________________________________
<property name="sessionFactory" ref="sessionFactory"/> 这个注入的不是自己的类org.springframework.orm.hibernate3.HibernateTransactionManager,而是自己类用到的组件LocalSessionFacoryBean
比如Class Person
private String head;
注入的是head而不是Person,但是其中Person的head是依赖你外面配置的head(sessionFactory)的,不知道我这样说楼主明白否
Spring
Spring中接口注入的方式有 接口注入、构造子注入、设值注入
C
关于srtuts框架,
Sturus框架基于MVC模式、Struts框架无法完成上传功能、Struts可以有效的降低象奴的类文件数目
public class A{
}
public class Test{
public static void main(String[] args){
int i = 1;
int j = 2;
A a = new A();
A b = new A();
Exchange(i,j);
Exchange(a,b);
}
public static void exchange(int i,int j){
int k = i;
i = j;
j = k;
}
public static void exchange(A a,A,b){
A c = a;
a = b;
b = c;
}
}
关于main方法的执行,正确的判断是(D )
A、i和j的值交换了,a和b指向的对象交换了
B、i和j的值交换了,a和b指向的对象没有交换
C、i和j的值没有交换,a和b指向的对象交换了
D、i和j的值没有交换,a和b指向的对象没有交换
1. 关于抽象类,下列说法正确的是(C )
A、如果父类不是抽象类,那么子类也不能是抽象类
B、尽管一个类没有抽象方法,该类仍然可以声明成抽象的
C、抽象类一定不能用private修饰
D、抽象类可以用final修饰
Struts中有提供拦截器功能件数什么时拦截器?拦截器的作用及经常使用的场景是什么?
拦截器可以说就是相当于就是把不想要或不想显示的内容给过滤掉。
拦截器可以抽象出一部分代码可以用来完善原来的action。同时可以减轻代码冗余,提高重用率
1.有部门dept、雇员emp表结构如下,请根据要求写出sql语句。
表dept字段为: deptno(primary key),dname
表emp字段为: empno(primary key),ename,job,mgr,sal,deptno
(1)写出部门表dept的SQL建表语句(deptno类型为Bigdecimal(19,0)类型,dname为varchar(10)类型)
(2)查询部门名称为“信息技术部”的所有员工的员工编号、员工姓名
(3)查询全体员工里姓张的员工的基本信息
(4)现有需求,将公司的“市场部”改名叫做“综合部”,请写出相应的SQL语句
(5)请删除emp中部门名称为“信息技术部”的员工信息。
(1)create table dept
(deptno bigdecimal(19,0) primary key,
dname varchar(10)
)
(2)select emp.empno,emp.ename from emp where emp.deptno =(select dept.deptno from dept where dname=’信息技术部’)
(3)select * from emp where ename like ‘张%’
(4)update dept set dname=’综合部’ where dname=’市场部’
(5)Delete from emp where emp.deptno=(select dept.deptno from dept where dname=’信息技术部’)
标准定义:switch 语句后面的表达式可以是整型,字符型,枚举型 因为byte能够无损的转换为int,但是如果是long类型,转换会有丢失,所以不行
以上是关于spring 静态接口注入的主要内容,如果未能解决你的问题,请参考以下文章