一个空间可以放两个网站吗,电子商务网站建设与管理试题及答案,仿牌网站,北京到安阳的大巴IOC#xff08;控制反转#xff09;
component的衍生注解
前面曾经提到#xff0c;若想要把某个对象交给IOC容器管理#xff0c;就需要在其声明上加上Component注解。但是Spring中有三层架构#xff0c;为了更加清晰的标注对象是属于哪一层的#xff0c;提供了三个Comp…IOC控制反转
component的衍生注解
前面曾经提到若想要把某个对象交给IOC容器管理就需要在其声明上加上Component注解。但是Spring中有三层架构为了更加清晰的标注对象是属于哪一层的提供了三个Component的衍生注解Controller标注在控制层、Service标注在业务层、Repository标注在数据访问层但是因为该层和Mybatis进行整合数据访问层一般使用Mapper。
Bean的名字
通过Component以及其衍生注解IOC容器中可能具有很多的bean对象那么是如何进行区分的呢——通过bean对象的名字IOC容器中的每一个bean都有自己对应的名字如果不进行指定bean对象的默认名字就是类名小写。 通过跟进Component的源代码发现其具有一个属性value我们可以通过value属性为其指定名字IOC容器中的名字 直接通过value属性修改名字 再次运行服务发现名字已经改变 bean的名字是十分重要的假如说一个UserService接口有多个实现类直接进行依赖注入是不行的无法知道应该注入哪个Bean此时就需要使用类名来配合指定bean。
ComponentScan组件扫描
一个类即使添加了Component注解也并不意味着其一定能够交给IOC容器管理因为这些声明bean的注解想要生效还需要进行组件扫描Component注解就可以进行组件扫描。这个注解虽然没有显式的进行配置但是其包含在了SpringBoot的启动类注解SpringBootApplication中 ComponentScan的默认扫描范围是启动类所在的包及其子包。超出这个范围的类即使声明了Component系列注解由于ComponentScan无法对其进行组件扫描所以说也不能交给IOC容器管理自然也不可以进行依赖注入了。
注意在SpringBoot集成的web开发中声明控制器Controller的bean只能使用Controller声明bean的注解想要生效就必须被ComponentScan组件扫描扫描到简单说来就是必须将其放在启动类所在的包及其子包中。