平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
我们常用的注入方式无非就是三种:属性注入、构造器注入、setter方法注入。
1.属性注入:
最常见的一种注入方法
示例:
@Service public class AClass { @Autowired BClass bclass; //... }
常用的注入注解还有@Resource和@Qualifier等。
2.构造器注入:
示例:
@Service public class AClass { BClass bclass; @Autowired public AClass(BClass bclass){ this.bclass = bclass; } }
当创建AClass对象时,调用其构造器,而其构造器上加有注解@Autowired,所以先从池中找到BClass的Bean对象注入到构造方法中,然后再调用此构造函数,也就是先将构造函数用到的参数注入,再调用构造函数。
如果类中只有一个构造函数,则不需要加@Autowired,在创建时会自动调用这个唯一的构造函数,如果有多个构造函数,则需要加上@Autowired来明确调用哪个构造函数。
3.setter方法注入:
不推荐使用setter方法注入,太过臃肿。
实例:
@Service public class AClass { BClass bclass; @Autowired publicviod setBClass(BClass bclass){ this.bclass = bclass; } }
当创建AClass对象时,先去调用AClass的构造器,发现AClass与BClass有依赖关系,然后使用setter方法先将bclass实例化,然后再注入到AClass中。
标签:总结,AClass,依赖,Spring,实例,bclass,BClass,构造函数,注入 From: https://www.cnblogs.com/Noob-Green-Hand/p/17323301.html