Spring的核心IOC和DI:
IOC(Inversion Of Controll)控制反转:应用程序本身不负责依赖对象的创建过程了,把创建对象的过程交给容器去做,这种控制权的转移就叫做IOC。
DI(Dependency Injection)依赖注入:动态的为依赖对象赋值的过程。
在使用Spring注解的步骤:
A:指定注解扫描器的扫描范围:
<context:component-scan base-package="com.xu"></context:component-scan>
B:在指定扫描范围内查找是否存在以下注解:
@Repository:用来dao层,扫描到后生成的对象的id为当前类的简单类名并且第一个字母小写
@Service:用来业务层,扫描到后生成的对象的id为当前类的简单类名并且第一个字母小写
@Controller:用来控制层,扫描到后生成的对象的id为当前类的简单类名并且第一个字母小写
@Component:在不确定当前类属于哪一层时使用,扫描到后生成的对象的id为当前类的简单类名并且第一个字母小写
@Resource:首先按照名称查找,如果找到则注入成功,如果没有找到则按类型查找,找到一个注入成功,找到多个报异常。
@Autowire:首先按照名称查找,如果找到则注入成功,如果没有找到则按类型查找,找到一个注入成功,找到多个报异常。
@Resource(name=“xx”):只按照名称查找,找到则注入成功,找不到注入失败
@Autowire @Qualifier(name=“xx”):只按照名称查找,找到则注入成功,找不到注入失败
@PostConstruct//指定在对象实例化后自动调用的方法,类上xml配置中的init-method属性
@PreDestroy //在对象销毁前自动调用的方法,类上xml配置中的destroy-method属性
@Scope(“singleton”) //默认是单例模式
@Scope(“prototype”)
@Lazy:如果使用单个类,没有被其它类调用则可以直接产生懒加载行为。
如果类之间存在多层调用关系,则只有最顶层的类上加上了懒加载注解,其下的类上没有加上懒加载注解则其下的类是立即加载,
如果加上了懒加载注解则产生懒加载,如果顶层类上没有加载懒加载注解,则只在底层类上加上懒加载注解无效。