每当spring boot应用程序运行时,它都会看到@springbootapplication注解并运行@componentscan,它扫描带有注解的类,比如@component等,并在容器中生成对象。我有一点想法,它可能在内部使用反射来创建对象,但我无法连接所有对象我想知道@autoconfiguration为容器提供了什么确切的信息,它能够获得任何组件的所有组件注解类的所有信息?p、 我把问题编错了
每当spring boot应用程序运行时,它都会看到@springbootapplication注解并运行@componentscan,它扫描带有注解的类,比如@component等,并在容器中生成对象。我有一点想法,它可能在内部使用反射来创建对象,但我无法连接所有对象我想知道@autoconfiguration为容器提供了什么确切的信息,它能够获得任何组件的所有组件注解类的所有信息?p、 我把问题编错了
2条答案
按热度按时间zlhcx6iw1#
首先
@AutoConfiguration
根据pom.xml中添加的依赖项,负责为spring引导应用程序设置默认配置。你要找的是
@ComponentScan
它在默认包及其所有子包中执行组件类扫描。它通过遍历包中的每个类并查找@Component
,@Service
或者@Repository
注解。如果它们中有任何一个存在,那么容器将其作为bean添加。@SpringBootApplication
内部有@ComponentScan
注解与另外两个一起添加到它。dly7yett2#
spring环境抽象是任何可配置属性的一站式服务。它抽象了属性的起源,以便需要这些属性的bean可以从spring本身使用它们。spring环境来自多个属性源,包括 jvm系统属性 操作系统环境变量 命令行参数 应用程序属性配置文件
springboot自动配置的bean都可以通过从spring环境中提取的属性进行配置。作为一个简单的示例,假设您希望应用程序的底层servlet容器在某个端口(而不是默认端口8080)上侦听请求。为此,通过在src/main/resources/application.properties中设置server.port属性来指定不同的端口,如下所示:server.port=9090