一、为什么要使用注解
因为一个项目内,有很多个bean
类,如果一个个写入xm
l文件中,太过于繁琐
这时可以使用注解扫描,在有注解的地方,自动注册为bea
n类,交给spring
管理
二、注解的过程
开启注解扫描,制定扫描从哪个包开始
(演示从, net.duck 开始扫描)
<beans>
<context:component-scan base-package="net.duck"></context:component-scan>
</beans>
对MVC三层使用不同的注解
-
@repository
Model层 -
@service
-
@controller
-
@configuration
配置层 -
@component
除了以上四种之外其他的都叫这个
}
将当前的bean 注入到容器中
也可以通多对注解提供参数来制定beanname
,若没有参数,默认以Class的首字母小写,其他不变作为beanname
例如:@Controller("b")
在容器中之后 就可以通过@Autowired
来装配对应的零件
@Autowired
首先检查容器中是否有当前类的实现,如果有且只有一个
直接注入,如果找到两个,再看成员变量名是否和beanname
一致,如果有,则注入对应的bean
如果没有,报Bug,需要通过@Qualifier("userServiceImpl2")
来指定具体注入哪一个类
三、将MVC目录文件改为注解,自动注入
1. Dao层
@Repository
public class UserDao {
}
2. Servlet层
在实现类使用注解
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao dao;
public List<User> queryAllUser() {
return dao.selectAllUser();
}
}
3. Controller层
@Controller
public class UserController {
@Autowired
private UserService service;
public List<User> queryAllUser() {
List<User> users = service.queryAllUser();
for (User user : users) {
System.out.println(user);
}
return users;
}
}
4. 主方法调用
public static void main(String[] args) {
/**
* 应用上下文,创建spring容器
*/
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 从bean获取到controller层,调用相关方法
UserController controller = (UserController) context.getBean("userController");
controller.queryAllUser();
}