分层解耦-IOC&DI-IOC详解

目录

Bean的声明

注意

声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写

使用以上四个注解都可以声明bean,但在SpringBoot集成Web开发中,声明控制器bean只能使用@Controller或者@RestController

Bean组件扫描

小结

Bean的声明

  • 要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一
注解 说明 位置
@Component 声明bean的基础注解 不属于以下三类时,用此注解
@Controller @Component的衍生注解 标注在控制器类上
@Service @Component的衍生注解 标注在业务类上
@Repository @Component的衍生注解 标注在数据访问类上(由于与Mybatis整合,用的少)

即在三层架构中需要实行反转控制,建议使用对应的注解

具体如下:

分层解耦-IOC&DI-IOC详解_第1张图片

分层解耦-IOC&DI-IOC详解_第2张图片

上述两个注解达到的效果与@Component注解的效果是一样的

注意

  • 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写

    • 分层解耦-IOC&DI-IOC详解_第3张图片
    • 上述EmpDaoA类的bean名称默认值如上
    • 设置如下:
      • 分层解耦-IOC&DI-IOC详解_第4张图片
      • 设置之后其名为daoA
      • 分层解耦-IOC&DI-IOC详解_第5张图片
  • 使用以上四个注解都可以声明bean,但在SpringBoot集成Web开发中,声明控制器bean只能使用@Controller或者@RestController

Bean组件扫描

  •  前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描
  • @ComponentScan注解虽然没有显示配置,但实际已经包含在启动类声明变量注解@SpringBootApplication中,默认的扫描范围是启动类所在包及其子包
    • 分层解耦-IOC&DI-IOC详解_第6张图片

可以在启动类中设置扫描的范围,但是不建议怎么做,直接遵循SpringBoot项目结构的规范就可以了。

小结

声明bean的注解

  • @Component、@Controller、@Service、@Repository
  • @SpringBootApplication具有包扫描作用,默认扫描当前包及其子包

你可能感兴趣的:(Java,Web学习跟踪笔记,java,开发语言)