XML改注解(IOC)
核心配置文件修改
context-component-scan标签Spring框架自定义的xml标签,通过base-package属性指明需要被自动扫描实例化的类所在位置
如下代码所示,我们在dao、services、controller下的类是需要扫描自动注入容器的
<?xml version="1.0" encoding="UTF-8"?><!-- bean definitions here -->
<context:component-scan base-package="dao"/>
<context:component-scan base-package="services"/>
<context:component-scan base-package="controller"/>
修改好后运行项目发现context.getBean()代码报错
说明不是在base-package下的所有类都会自动注入到容器,而是要搭配注解使用
常用注解介绍
@Component:一般用于通用组件类上使用的注解
@Service:一般用于业务逻辑层上使用的注解
@Controller:一般用于流程控制层上使用的注解
@Repository:一般用于数据持久层上使用的注解
依次添加注解,添加之后运行再次报错找不到bean
其实我们在添加注解后,Spring会默认给每个bean设置id,值为类名首字母改为小写
这次报错原因就是找不到名为”userService“的bean
解决办法就是在注解时设置bean的id,保证可以找到bean
测试结果
测试结果如下图所示:
表示已经使用注解方式将对象放入Spring容器中