1:为什么需要扫描器
实际开发中,bean数量庞大,采用手动装配bean的方式无法满足生产,spring提供了扫描方式,对扫描的bean对象统一管理,简化开发配置,提高开发效率。
2:Spring扫描器配置
- 引入context
- 开启自动扫描范围:如果bean对象未在此包内,即使添加注解也无法实例化。
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解驱动-->
<context:annotation-config/>
<!--声明扫描的包-->
<context:component-scan base-package=""/>
</beans>
3:SpringIOC扫描器使用

使用指定的注解(声明在类上) bean的id默认为类名首字母小写
-
Dao层:
@Repository -
Service层:
@Service -
Controller层:
@Controller -
任意类:
@Component
各层类:
//dao层注解
@Repository
public class UserDao {
public void test(){
System.out.println("UserDao");
}
}
//service层注解
@Service
public class UserService {
//自动装配
@Resource
private UserDao userDao;
public void test(){
userDao.test();
System.out.println("UserService");
}
}
//controller层
@Controller
public class UserController {
//自动装配
@Resource
private UserService userService;
//自动装配
@Resource
private OtherUser otherUser;
public void test(){
otherUser.test();
userService.test();
System.out.println("UserController");
}
}
//任意类
@Component
public class OtherUser {
public void test(){
System.out.println("OtherUser");
}
}
Test:
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
UserController uc= (UserController) context.getBean("userController");
uc.test();
/*
OtherUser
UserDao
UserService
UserController
*/
}
本文介绍了Spring框架中IOC容器的自动扫描功能,它能有效管理大量bean,简化配置。通过在XML配置中开启注解驱动并指定扫描包,Spring可以自动识别使用了@Repository、@Service、@Controller和@Component注解的类。这些注解分别用于标记DAO、Service、Controller和任意类。通过依赖注入,不同层的类之间可以自动装配,提高代码复用和维护性。示例代码展示了如何在实际开发中使用这些注解和扫描功能。
564

被折叠的 条评论
为什么被折叠?



