java—spring boot中ioc和di的内部实现

4zcjmb1e  于 2021-07-23  发布在  Java
关注(0)|答案(2)|浏览(282)

每当spring boot应用程序运行时,它都会看到@springbootapplication注解并运行@componentscan,它扫描带有注解的类,比如@component等,并在容器中生成对象。我有一点想法,它可能在内部使用反射来创建对象,但我无法连接所有对象我想知道@autoconfiguration为容器提供了什么确切的信息,它能够获得任何组件的所有组件注解类的所有信息?p、 我把问题编错了

zlhcx6iw

zlhcx6iw1#

首先 @AutoConfiguration 根据pom.xml中添加的依赖项,负责为spring引导应用程序设置默认配置。
你要找的是 @ComponentScan 它在默认包及其所有子包中执行组件类扫描。它通过遍历包中的每个类并查找 @Component , @Service 或者 @Repository 注解。如果它们中有任何一个存在,那么容器将其作为bean添加。 @SpringBootApplication 内部有 @ComponentScan 注解与另外两个一起添加到它。

dly7yett

dly7yett2#

spring环境抽象是任何可配置属性的一站式服务。它抽象了属性的起源,以便需要这些属性的bean可以从spring本身使用它们。spring环境来自多个属性源,包括 jvm系统属性 操作系统环境变量 命令行参数 应用程序属性配置文件
springboot自动配置的bean都可以通过从spring环境中提取的属性进行配置。作为一个简单的示例,假设您希望应用程序的底层servlet容器在某个端口(而不是默认端口8080)上侦听请求。为此,通过在src/main/resources/application.properties中设置server.port属性来指定不同的端口,如下所示:server.port=9090

相关问题