在spring中我们通过在xml中定义bean来配置组件。如果项目中的组件比较多,如果采用在xml文件中来定义这些bean,那么xml配置文件的体积就会越来越大。虽然可以使用 annotation 来进行注入,维护bean之间的依赖关系,不必在xml中进行配置,少了依赖关系的配置,但bean还是以要在xml中定义,这样xml文件依然是一种增量式的配置
spring2.5引入了组件自动扫描的机制,可以采用在classpath自动扫描方式把classpath中所有的组件都纳入到spring 容器来进行管理。但是这些类需要使用使用 @Service,@Controller, @Repository 这几个注解。它的作用与在xml文件中使用bean节点配置组件式一样的。
·@Service用于标注业务层组件
·@Controller用于标注控制层组件,比如struts中的action
·@Repository用于标注数据访问组件,如DAO组件
·@Component泛指组件,当组件不好归类的时候,我们可以使用它进行标注
要完成自动扫描,我们好需要在xml配置中引入以下信息:
a) context命名空间以及这个命名空间的schema文件
b) <context:component-scan base-package=”com.wq” /> 打开组件扫描配置项base-package表示自动扫描com.wq包以及它的子包。
<context:annotation-config /> 可以不必打开,因为<context:component-scan>完成了annotation处理的注册
com.wq.dao.UserDAO.java
//userDAO是这个bean在spring容器中的ID号
//如果不写,则默认为类名,将类名的首字母小写
@Repository("userDAO")
public class UserDAO {
public String[] findUsers(){
return new String[]{"张三","李四","王五"};
}
}
com.wq.serviceUserService.java
//userService是这个bean在spring容器中的ID号
//如果不写,则默认为类名,将类名的首字母小写
@Service("userService")
public class UserService {
private UserDAO userDao;
public UserDAO getUserDao() {
return userDao;
}
@Resource(name="userDAO")
public void setUserDao(UserDAO userDao) {
this.userDao = userDao;
}
public String[] getAllUser(){
return userDao.findUsers();
}
}
运行测试类,与前面使用xml配置文件效果是一样的。这样我们就再也不用在xml文件中配置bean了,xml文件也不是一种增量配置。
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService=(UserService) ctx.getBean("userService");
String[] users=userService.getAllUser();
for (String user : users) {
System.out.println(user);
}
}
- 大小: 41.5 KB
分享到:
相关推荐
在Spring 2.5中,引入了类路径扫描(ClassPath Scanning)功能,这使得我们可以自动发现和注册bean。无需在XML配置文件中显式声明每一个bean,只需指定基础包名,Spring会自动搜索包及其子包下的所有@Component、@...
4. **自动扫描和组件探测**:Spring 2.5可以自动检测classpath中的Spring组件(带有特定注解的类)。这使得开发者无需显式地在XML配置中声明每个bean,而是由Spring自动识别和管理。 5. **Web层的新特性**:Spring ...
3. **自动扫描**:Spring 2.5支持`<context:component-scan>`标签,自动发现和注册带有特定注解(如@Service、@Repository、@Controller)的bean,降低了XML配置的工作量。 4. **Java配置**:虽然本例中仅提及XML...
//applicationContext.xml文件中添加 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...-- 开启classpath扫描 --> <context:component-scan base-package="com.haijian" />
- **classpath自动搜索组件** 自动组件扫描功能允许Spring容器在类路径下查找标记了特定注解的类,自动注册为bean,进一步减少了手动配置的工作量。 2. 面向切面编程(Aspect-Oriented Programming, AOP) AOP是...
2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载...
-- 自动扫描所有注解该路径 --> 14. 15. <context:property-placeholder location="classpath:/hibernate.properties" /> 16. 17. 18. class="org.springframework.orm.hibernate3.annotation....
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...
- **3.9.9 ClassPath扫描和管理组件** - 如何使用@ComponentScan注解进行类路径扫描,自动发现和注册组件。 - **3.9.10 使用过滤器自定义扫描** - 通过自定义过滤器来控制哪些类被注册为bean。 - **3.9.11 在...
1.14 从Classpath中扫描组件 50 1.14.1 问题 50 1.14.2 解决方案 51 1.14.3 工作原理 51 1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决...
使用`MapperScannerConfigurer`配置Bean,自动扫描DAO接口,并将其注入到Spring的IOC容器中。 ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ``` ##### 2.5 事务管理 事务管理是...
1.14 从Classpath中扫描组件 50 1.14.1 问题 50 1.14.2 解决方案 51 1.14.3 工作原理 51 1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决...
-- 扫描包 --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view....
-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能--> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0" /> <!-- 配置事务...
- **使用"default"包**: 默认情况下,Spring Boot会自动扫描主类所在的包及其子包。 - **定位main应用类**: 主类通常带有`@SpringBootApplication`注解。 **3.3 配置类** - **导入其他配置类**: 使用`@Import`注解...
- **Spring配置**:创建Spring的配置文件,定义Bean,包括Service、DAO等,并设置自动扫描。 - **Struts2配置**:编写Action类,定义Action配置,以及结果映射。 - **视图层**:创建JSP页面,利用Struts2的标签...