1、Spring Boot 的启动类启动时,默认扫描其所在的根目录及其子目录。
所以:所以注入的bean,放在 启动类所在的目录或者启动类所在目录的子目录,最为适宜。
2、如果,注入的bean不在启动类所在的目录或者其子目录下的话,默认扫描是找不到的,
这时候,就需要在启动类上添加扫描的目录。
注意:添加扫描的目录时:添加了什么目录,启动类启动时就扫描这个目录及其子目录,
所以,添加扫描bean的目录时,一定要添加,启动类所在的目录(否则,启动类所在的
目录及其子目录是不会被扫描的;当然,如果启动类所在的目录及其子目录 没有要用到
的东西--<基本没这种情况>,可以不添加。所以还是加上,以免出现未知异常,就头疼了。)
即:需要扫描哪里,就添加对于的扫描目录(灵光一闪)。
3、举例说明:
A:先举例说明第二中情况:
两个module:
I:springboot-web
//启动类WebApplication.java 所在的目录为:com.cp.springboot.web
//MsgController所在目录为:com.cp.springboot.web.controller
II:springboot-domain
//MsgBean 所在目录为:com.cp.springboot.domain.bean
此时:要想正确调用注入的MsgBean,启动类应该添加扫描目录:
@ComponentScan(basePackages = {"com.cp.springboot.web","com.cp.springboot.domain.bean"})
启动类代码如下:
@SpringBootApplication @ComponentScan(basePackages = {"com.cp.springboot.web","com.cp.springboot.domain.bean"}) public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); } }
B:举例说明第一种情况:注入bean后,不需要进行其他改动
两个module:
I:springboot-web
//启动类WebApplication.java 所在的目录为:com.cp.springboot.web
//MsgController所在目录为:com.cp.springboot.web.controller
II:springboot-domain
//MsgBean 所在目录为:com.cp.springboot.web.bean
此时:MsgBean所在的bean目录是:com.cp.springboot.web目录(启动类所在的目录)的子目录,
所以,启动类启动时,也会自动扫描bean目录,就不需要再添加扫描目录了。(这样简单明了,并且以后打包放进spring-web中的时候,出现问题的概率不大。此处纯属个人见解,哈哈,仁者见仁,智者见智。
当然,很多大侠们还有更风骚的处理方式,我也在寻找。
)
相关推荐
- `@Value` 注解:注入配置值到Bean属性中。 - `@ConfigurationProperties`:将配置文件中的复杂结构映射到Java对象。 **六、SpringBoot的测试** - `@SpringBootTest`:用于启动整个Spring Boot应用进行集成测试。 ...
对于多数据源,我们需要为每个数据源创建对应的配置类,实例化DataSource bean,并将其注入到数据访问层。例如,使用JPA时,可以创建两个实体配置类,分别对应MySQL和SQLServer的数据源。 5. **测试与部署**:完成...
另一种方式是通过`ApplicationContext`获取Controller B的实例,确保Spring管理的依赖注入得以保留。下面是一个例子: ```java @RestController @RequestMapping("/flop") @Validated public class FlopController ...
2. **多数据源配置**:在SpringBoot中实现多数据源,主要是通过配置不同的DataSource Bean来实现。每个数据源需要设置JDBC连接信息,包括URL、用户名、密码等,并且可以通过`@Qualifier`注解来区分不同的数据源。 3...
面向切面编程是一种编程范式,它通过将那些影响多个类的公共行为封装成可重用模块(称为“切面”),然后将这些切面织入到目标对象中,以此来实现代码的复用和解耦。 - **核心概念** - **切面**(Aspect):封装了...
我们需要确保新加载的插件bean能够正确地初始化、注入依赖并参与到应用的生命周期中。 6. **事件驱动**:利用Spring的ApplicationEvent和ApplicationListener机制,当插件被加载或卸载时,可以发布和监听相应的事件...
它提供了全面的基础设施支持,包括但不限于依赖注入、面向切面编程(AOP)、数据访问/集成、事务管理、Web模块、测试等等。Spring的核心特性之一就是依赖注入,它通过在运行时自动配置对象及其依赖关系,极大地简化...
- 自动配置:SpringBoot会根据项目中的依赖自动配置相应的Bean,减少手动编写配置文件的工作。 - 起步依赖:通过添加特定的Maven或Gradle依赖,即可引入所需的功能模块,如Spring Data JPA、Spring Security等。 ...
SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。...
至于Spring框架,它是Java企业级开发的事实标准,提供了依赖注入、AOP(面向切面编程)、数据访问、Web开发等多种功能。SpringBoot是基于Spring框架构建的,但通过自动化配置和起步依赖,使得使用Spring变得更加简单...
SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。...
3. 在`@Around`通知的`ProceedingJoinPoint`中,使用Spring的`@Resource`注入所有数据源的`DataSource` Bean,然后根据解析的结果,切换到对应的数据源。 4. 执行原方法(`joinPoint.proceed()`),此时MyBatis会...
MyBatis-Spring是它们的整合模块,负责处理事务管理和Bean的注入,使得在Spring环境下使用MyBatis变得简单。 【MySQL】MySQL提供了强大的SQL支持,适合各种规模的项目。在Spring Boot中,通过JDBC或者JPA来与MySQL...
可以了解到 SpringBoot 框架的各个方面,包括整合 Mybatis-Plus、全局异常处理、RESTful API 接口统一 JSON 格式返回、参数校验、Swagger Api 自动生成文档、AOP 编程、默认 json 解析器、@ModelAttribute 用法、多...
3. **spring-beans-4.3.5.RELEASE.jar**:Spring框架的核心模块,包含bean的定义、配置、生命周期管理和依赖注入等功能。它是Spring应用程序的基础。 4. **jcl-over-slf4j-1.7.21.jar**:Jakarta Commons Logging ...
同时,Spring的IoC(控制反转)容器将管理我们的bean生命周期,使得依赖注入变得简单。 至于"后端",这表明我们关注的是服务器端逻辑。在无数据库的项目中,后端可能需要处理API请求,例如通过RESTful API提供服务...
1.2 Spring 系统架构主要包括四个主要模块:Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web(Web)、AOP(面向切面编程)。Core Container 包括 Beans 和 Core 模块,提供 IoC 和 DI ...
这样,SpringBoot会自动将配置文件中的值注入到Bean的字段中。 2. `@Value`: 这个注解允许你直接在字段或者方法上注入配置属性的值。相比于`@ConfigurationProperties`,`@Value`更适合于简单的属性注入,如单一...
5. `@Autowired`:自动装配bean,根据类型注入依赖。 三、SpringBoot应用讲解 1. 快速起步:SpringBoot可以通过命令行或IDE插件快速创建项目,通常包含一个主类和一个简单的HelloWorld控制器。内置Tomcat服务器使得...