实际项目如果很大就会出现大量的配置,我们使用扫描器可以解决这个问题,扫描器扫描带有@Controller, @Service,@Repository, @Component的类。
@Controller:控制层的类
@Service:服务层的类
@Repository:数据层的类dao
@Component:无法分层的类
以上注解标注的类的bean的id默认是类名的首字符小写,一旦设置注解的名字,默认名失效
@Service("aaa")
//@Component("aaa")
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("userDaoImpl")
private UserDao userDao;
@Override
public void save() {
userDao.save();
}
}
配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!--注解扫描器
base-package:spring下的类和子包下的类都会被扫描
-->
<context:component-scan base-package="spring"/>
</beans>
// 测试
public class TestSpring {
@Test
public void test2() {
// 初始化spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
// 获得bean
// UserService userService = (UserService) context.getBean("userServiceImpl");
UserService userService = (UserService) context.getBean("aaa");
userService.save();
}
}