applicationContext.xml配置
一、<context:component-scan>使用说明
1、启用注解扫描,并定义组件查找规则,mvc只负责扫描@Controller
<context:component-scan base-package="com.jjapu.web.controller" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
参数说明: 在context:component-scan可以添加use-default-filters,spring配置中的use-default- filters用来指示是否自动扫描带有@Component、@Repository、@Service和@Controller的类。默认为true,即默认扫描以上四个注解。
2、如果想要过滤其中这四个注解中的一个,比如@Repository,可以添加<context:exclude-filter />子标签,例如:
<context:component-scan base-package="com.jiapu.web" scoped-proxy="targetClass"
use-default-filters="true">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
/context:component-scan>
参数说明:<context:include-filter/>子标签是用来添加扫描注解的。
3、但是如果添加和排除的是相同,则必须include-filter在前,exclude-filter在后,否则配置不符合spring -context-3.0.xsd要求,Spring容器解析时会出错。上面的配置会把@Repository注解的类排除掉。
<context:component-scan base-package="tv.crm" scoped-proxy="targetClass"
use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
参考很多配置资料总结使用:
<context:component-scan base-package="com.jiapu.web" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
这个只扫描com.jiapu.web包下的@Controller,不会扫描@Service、@Repository
<context:component-scan base-package="com.jiapu">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
这个不但扫描com.jaamy包下的@Controller,同时也会扫描@Service、@Repository,注意这里没有添加use-default-filters参数
关于include-filter、exclude-filter的作用主要是用来过滤扫描到的bean是否合法:
首先通过exclude-filter进行黑名单过滤;
然后通过include-filter进行白名单过滤;
在自动扫描里面我们在配置<context:include-filter/>,然后type=“assignable”,这里的意思是,BaseInterface接口所派生出来的所有类,都自动注册bean
type的四种参数:
assignable-指定扫描某个接口派生出来的类
annotation-指定扫描使用某个注解的类
aspectj-指定扫描AspectJ表达式相匹配的类
custom-指定扫描自定义的实现了org.springframework.core.type.filter.TypeFilter接口的类
regex-指定扫描符合正则表达式的类
二、<context:annotation-config>使用学习
<context:annotation-config>是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)。
context:component-scan>除了具有<context:annotation-config>的功能之外,<context:component-scan>还可以在指定的package下扫描以及注册javabean 。
1、<context:annotation-config/>配置作用:他的作用是式地向 Spring 容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor 以及 RequiredAnnotationBeanPostProcessor 这 4 个BeanPostProcessor。注册这4个 BeanPostProcessor的作用,就是为了你的系统能够识别相应的注解。
例如:
如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。传统声明方式如下
<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/>
如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor
如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
如果想使用 @Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。同样,传统的声明方式如下:
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
一般来说,这些注解我们还是比较常用,尤其是Antowired的注解,在自动注入的时候更是经常使用,所以如果总是需要按照传统的方式一条一条配置显得有些繁琐和没有必要,于是spring给我们提供<context:annotation-config/>的简化配置方式,自动帮你完成声明。
不过,我们使用注解一般都会配置扫描包路径选项
<context:component-scan base-package=”XX.XX”/>
该配置项其实也包含了自动注入上述processor的功能,因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了
相关推荐
一、Spring配置概述 Spring的配置方式主要有两种:XML配置和Java配置。早期,XML配置是主流,而现在,随着Spring Boot的兴起,Java配置逐渐成为首选,因为它更加简洁和直观。不过,理解XML配置对于学习Spring的基础...
《SpringCloud视频学习》 SpringCloud作为微服务架构的重要实现框架,深受广大开发者的喜爱。本资源包含了两部关于SpringCloud的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...
SpringCloud学习手册是一个针对微服务架构的资源包,主要涵盖了SpringCloud的相关知识,适用于初学者。SpringCloud作为Java领域中的主流微服务框架,为开发者提供了构建分布式系统所需的工具和服务发现、配置管理、...
1. **简单应用示例**:展示一个基础的Spring配置,如何启动Spring容器并运行一个简单的Hello World程序。 2. **IoC实践**:包含各种Bean的定义和注入方式的代码实例,比如单例、原型、工厂bean等。 3. **AOP示例**...
下面是对Spring配置文件的详细介绍。 首先,Spring配置文件通常是以`.xml`为扩展名的文件,例如`beans.xml`。这些文件存储在项目的`src/main/resources`目录下,以便在运行时被自动加载。Spring容器...
【MyBatis-Spring配置教程】是一份专为初学者设计的教程,旨在帮助学习者快速掌握如何在Spring框架中整合并使用MyBatis。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Spring则是一个...
本学习提纲旨在为初学者提供一份详尽的Spring 2.0学习指南,帮助他们系统地掌握这个框架的核心概念和技术。 一、Spring概述 1. Spring框架介绍:理解Spring的起源,目标及主要功能,包括简化Java EE开发、提供容器...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
本文主要围绕"Spring源码学习七:web应用自动装配Spring配置文件1"这一主题,详细解析Web环境中Spring的初始化过程。 首先,我们注意到在传统的Java应用程序中,通常使用`ClassPathXmlApplicationContext`手动创建...
- Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和AccessDecisionManager。 - 使用@Secured和@PreAuthorize注解进行方法级别的...
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
Spring框架是Java开发中不可或缺的一部分,它以...通过学习以上这些知识点,你可以全面掌握Spring框架,并将其应用于实际项目中,提高开发效率和应用的稳定性。Spring的灵活性和强大功能使其成为Java开发者的首选框架。
Spring框架是Java开发中最常用的轻量级框架之一,它的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented ...深入学习Spring4的jar包和配置文件,将使你更好地驾驭Java开发环境,提高软件工程能力。
以下是对"Spring学习资料大全"的详细解析: 1. **Spring框架基础**: - **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,它允许开发者在运行时通过XML配置或注解方式来管理对象间的依赖关系,...
在Spring 2.0的学习过程中,我们主要会接触到一系列的核心概念和关键特性,这些知识点对于理解和掌握Spring框架至关重要。下面将详细阐述其中的关键点。 1. **IoC(Inversion of Control,控制反转)**: Spring的...
《Spring 3.3 学习案例:深度解析SpringMVC与Mybatis集成》 Spring框架作为Java领域中最为广泛使用的轻量级框架之一,深受开发者喜爱。Spring 3.3版本是其历史上的一个重要里程碑,它提供了丰富的功能和完善的服务...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于Java的应用程序。在本文中,我们将深入探讨Spring ...通过学习和实践这些示例,你将能够为自己的Spring应用程序构建强大的安全防护。
通过这个 "springcloud-config" 压缩包,你可以学习如何设置和使用 SpringCloud Config,理解其核心概念和工作流程,以及如何在 Java 微服务环境中应用这些知识。这个 demo 将帮助你在实际项目中实现灵活、可扩展的...
通过学习《Spring配置全书》,开发者能够全面掌握Spring框架的配置技巧,提升Java企业级应用开发的效率和质量。无论是初学者还是资深开发者,都能从中受益,更好地利用Spring框架进行复杂应用的构建。
5. **自动装配**:自动配置是SpringBoot的一大特色,它通过`classpath:/META-INF/spring.factories`中的配置信息进行初始化。开发者可以通过`@EnableAutoConfiguration`注解启用自动配置,而这个注解通常在`@...