Spring常见问题

1、利用Spring框架编程,console打印出log4j:WARN Please initialize the log4j system properly?LUPA开源社区)U I]W.D/T
说 明你的log4j.properties没有配置。请把log4j.properties放到工程的classpath中,eclipse的 classpath为bin目录,由于编译后src目录下的文件会拷贝到bin目录下,所以你可以把log4j.properties放到src目录下。
*/ Ah%l-wS ECU0这里给出一个log4j.properties的例子:
d| |n7r0Ch2B0
In~Rx7@.E)w0log4j.rootLogger=DEBUG,stdoutLUPA开源社区'a|^{6s
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
!j1VrOQ7E0log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
c^mF)F;Df0log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n
6X4r)E5A7~&B4/0LUPA开源社区-K Q'k%G[ l

+U[j&j%s3@02、出现 java.lang.NoClassDefFoundError?LUPA开源社区7Dh2J;`)h+mw
一般情况下是由于你没有把必要的jar包放到lib中。LUPA开源社区)KsK)Q)T
LUPA开源社区Ao^4b-HGW[9CU
比如你要采用spring和hibernate(带事务支持的话),你除了spring.jar外还需要hibernat.jar、aopalliance.jar、cglig.jar、jakarta-commons下的几个jar包。LUPA开源社区_[{w%FHM+xBh
LUPA开源社区+o"S|ap/G
http://www.springframework.org/download.html下载spring开发包,提供两种zip包
po'R4]_ sfT3Tj0spring -framework-1.1.3-with-dependencies.zip和spring-framework-1.1.3.zip,我建议你下载 spring-framework-1.1.3-with-dependencies.zip。这个zip解压缩后比后者多一个lib目录,其中有 hibernate、j2ee、dom4j、aopalliance、jakarta-commons等常用包。LUPA开源社区$ybw-N3JYQ6_/HBZh

T�r'QY(Uy0LUPA开源社区CeOv6z9q�hE
3、java.io.FileNotFoundException: Could not open class path resource [....hbm.xml],提示找不到xml文件?
E}'kuix0原因一般有两个:
0?E]ddK;j3IyJ0(1)该xml文件没有在classpath中。
M#nhP;?"ZoR-[-q0(2)applicationContext-hibernate.xml中的xml名字没有带包名。比如:
2K9?]8I([MDDQg0<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
p}P0ls9K0        <property name="dataSource"><ref bean="dataSource"/></property>
"j�hF+`2uV.s&Uw!K0        <property name="mappingResources">LUPA开源社区&g/R u�L_m
            <list>LUPA开源社区nk u&@ y m
                <value>User.hbm.xml</value>         错,改为: <value>com/yz/spring/domain/User.hbm.xml</value>
)W1^j q,{O)Ayk�~0            </list>LUPA开源社区5HuY$yZ
        </property>LUPA开源社区3D7Si*w&|X8_
        <property name="hibernateProperties">
5o)r.e w /4/;tL~,D0         <props> LUPA开源社区2I!Ts7cm
         <prop key="hibernate.dialect"> net.sf.hibernate.dialect.MySQLDialect </prop> LUPA开源社区g#V [l$i|m
         <prop key="hibernate.show_sql">true</prop>
$qQ+{4]3Wuba0        </props>
4I�s f�_%Mu ot0        </property>
D6OrQ)u7C0</bean>
1C[6{Ex3]0
#Y`:~[2w`%{-X0LUPA开源社区i-sw$rgq
4、org.springframework.beans.NotWritablePropertyException: Invalid property 'postDao' of bean class?
ie.p4]*}Q$ZG+G0出现异常的原因是在application-xxx.xml中property name的错误。
&a:m$?$i ]N+d0R!X1Z0<property name="...."> 中name的名字是与bean的set方法相关的,而且要注意大小写。
s%/s,i^b0比如LUPA开源社区_mI;e{5a5}-_(`
public class PostManageImpl extends BaseManage implements PostManage {
Y"g3Y@ m-?G{+m3E]0    private PostDAO dao = null;LUPA开源社区@;Z6m+Wsw
    public void setPostDAO(PostDAO postDAO){
vxa5aJ0        this.dao = postDAO;LUPA开源社区-K!Lg ]so
    }LUPA开源社区dk(])U,alU
}
,S'P{^j0那么xml的定义应该是:LUPA开源社区tF*@'?'?O
<bean id="postManage" parent="txProxyTemplate">
]�l�Pc-mJf/WK(r0        <property name="target">LUPA开源社区GO(jMwn^a^
            <bean class="com.yz.spring.service.implement.PostManageImpl">LUPA开源社区N9i4jt-W
                <property name="postDAO"><ref bean="postDAO"/></property>    对LUPA开源社区T,EDD7I/t&I4K!]
                <property name="dao"><ref bean="postDAO"/></property>             错LUPA开源社区'kC2XJcz
            </bean>
7P1o./5~$X2O ]0        </property>LUPA开源社区kD&p0A0nZ+ki
</bean>LUPA开源社区G5E^D;k3| FGq.z%M
LUPA开源社区 NNAR7k9g1zs8N
LUPA开源社区4F ~{ M%y6Z
5、Spring中如何实现事务管理?
?"`%~*I ]~0        首先,如果使用mysql,确定mysql为InnoDB类型。LUPA开源社区D@Q1Li0h rE'H;Ucg
        事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean,在该JavaBean中调用DAO,然后把该Bean的方法纳入spring的事务管理。LUPA开源社区2yQ J%OiQ%ct-c4oZ

?1Y,q9[[V3u$dz�N4m0比如:xml文件定义如下:
*c5E8Q9k1h*t#@"G0<bean id="txProxyTemplate" abstract="true"
shy:O j;Q]0        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
;Ot};yll2G0        <property name="transactionManager"><ref bean="transactionManager"/></property>LUPA开源社区&b9]&Ce;A3L(UC
        <property name="transactionAttributes">
$D.z G'l1bg;JX0            <props>
o,J9a&K.r#H�u0                <prop key="save*">PROPAGATION_REQUIRED</prop>
(Nj q7Ca0                <prop key="remove*">PROPAGATION_REQUIRED</prop>
:xG-Y6jT/m ]#u0                <prop key="*">PROPAGATION_REQUIRED</prop>
1e1qQNFP0            </props>
5i2B I;e2v#{Ve0n?&U;[0        </property>LUPA开源社区-t*p m�?Bc"aD`)S
</bean>LUPA开源社区#xMAY V(J
LUPA开源社区 Zlv"r{'_!@
<bean id="userManage" parent="txProxyTemplate">
4M:_N Z7Jz;H4f0      <property name="target">
f$F8o1e:j0          <bean class="com.yz.spring.service.implement.UserManageImpl">LUPA开源社区Ov,/$_:](_VzN(M!]
              <property name="userDAO"><ref bean="userDAO"/></property>LUPA开源社区f0Lu&pZ5Z
          </bean>LUPA开源社区6{'k^cM7P;w!q7Vb*r
      </property>LUPA开源社区c)B5|-u_ ZB
</bean>
f!|-u b6I+]zD[:j0
xOXb/*o ?)u0com.yz.spring.service.implement.UserManageImpl就是我们的实现商业逻辑的JavaBean。我们通过parent元素?/span>

6、如何管理Spring框架下更多的JavaBean?
.Tw-x mV0
0pn.c.Cx`0  JavaBean越多,spring配置文件就越大,这样不易维护。为了使配置清晰,我们可以将JavaBean分类管理,放在不同的配置文件中。 应用启动时将所有的xml同时加载。
a h,Cm3~{P0 LUPA开源社区s;P*nTQ.cY] H _
  比如: LUPA开源社区`5t#zfc6d#L"@;Y
LUPA开源社区,NU^!o(@ Kz$OQNF
   DAO层的JavaBean放到applicationContext-hibernate.xml中,商业逻辑层的JavaBean放到 applicationContext-service.xml中。然后启动类中调用以下代码载入所有的ApplicationContext。
v!J9P2x$n0
(B:eI;K6kpg@!L0String[] paths = {"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml", LUPA开源社区g+]3WG_Y a2~%l
"com/yz/spring/service/applicationContext-service.xml"}; LUPA开源社区2uT%q4Gt8u a7xn
ctx = new ClassPathXmlApplicationContext(paths);
mg9l'yE[]5J:|A0[$b0
(D"N,b%Vw ^#DL(Q2j&m0  7、web应用中如何加载ApplicationContext?
[RY-P%Wp["K0
lL6KV9k&I(Ubl4h Gm0  可以通过定义web.xml,由web容器自动加载。 LUPA开源社区iva-u!}O

3PixM0^6s0<servlet>
JCfz)E"`�@"S$J0<servlet-name>context</servlet-name> LUPA开源社区Bw5Cpx s4]'Pt
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> LUPA开源社区Eq-hRq}6?2t7M1L�Q [
<load-on-startup>1</load-on-startup> LUPA开源社区!_#?z5l{Ic
</servlet>
1Z A o({j8W0 LUPA开源社区6G)p@;M:[z.E
<context-param> LUPA开源社区zT-~*{,P8S]^
<param-name>contextConfigLocation</param-name> LUPA开源社区S/](r3H,sGi
<param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
+V5^+/ G5?0<param-value>/WEB-INF/applicationContext-service.xml</param-value> LUPA开源社区+W,|ZG n_
</context-param>
-w7y6S#ju1/ c {0 LUPA开源社区#u;i*S%h%hH*W
  8、在spring中如何配置的log4j? LUPA开源社区f/hF'I'Y*J
LUPA开源社区E9N}vg9e
  在web.xml中加入以下代码即可。
9L%V7i,SE0 LUPA开源社区Q$? P4rQ k"s
<context-param>
Dcb'u1pYT d0<param-name>log4jConfigLocation</param-name> LUPA开源社区q#I#I5B9p1G(TRfp;v
<param-value>/WEB-INF/log4j.properties</param-value>
;i5VE"N/VD0</context-param>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值