设值注入
设值注入是指IoC容器使用属性的setter方法来注入被依赖的实例,这种方式简单,直观因而在Spring的依赖注入里大量使用。
例如:
定义了一个Person接口:
public interface Person{
//定义使用父子的方法
public void userAxe();
}
下面是Axe接口的代码:
public interface Axe{
// Axe接口里有个砍的方法
public String chop();
}
下面是Person接口的实现类:
public class Chinese implements Person{
private Axe axe;
public Chinese(){
下面是一个BeanUtils类,我们可以再某个servlet或filter中调用
BeanUtils.setContext(WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
来初始化,然后就可以在程序调用getBean来获取对应的Bean的实例。
public Class BeanUtils{
********************
spring mvc+hibernate中,应该将事务控制放到xxx-servlet.xml中,而不是在applicationContext.xml中,否则没有效。而且会在使用sessFactory的getCurrentSession()时报出异常。目前在spring3.0.3发现这个问题,在spring3.0.6和spring3.1没有发现
如果出现spring-webmvc-tiles3不能构建,爆出如下错误:
Execution failed for task ‘:spring-webmvc-tiles3:eclipseClasspath‘.
> Could not resolve all dependencies for configuration ‘detachedConfiguration2‘.
则在build.gradle中找到
project("spring-webmvc-tiles3") {
.....
}
在其中加入:
eclipseClasspath {
downloadSources = false; // required for eclipseClasspath to work
}
*************************
spring 循环依赖错误
consider using ‘getBeanNamesOfType‘ with the ‘allowEagerInit‘ flag turned off
出现这种错误表示A类中依赖了B类,而B类中有依赖了A类,陷入了一个循环。