首页 > 编程语言> > springboot项目主程序入口的一些常见内容:@ SpringBootApplication(复合注解)以及CommandLineRunner和ApplicationRunner两个接口
springboot项目主程序入口的一些常见内容:@ SpringBootApplication(复合注解)以及CommandLineRunner和ApplicationRunner两个接口
作者:互联网
1.@SpringBootApplication 是一个复合注解
@SpringBootApplication 作为项目的主启动类,是一个复合注解,核心部分是由 @SpringBootConfiguration, @EnableAutoConfiguration ,@ComponentScan 在一起组成1.1@SpringBootConfiguration
简单的看一下源码之间的继承关系 @SpringBootConfiguration组成部分中有@Configuration
也就意味着有此注解的类也被 赋予了可以使用各种注解的功能(比如通过@Bean声明对象放入容器中等功能 但还是单独开一个包写比较好)
1.2@EnableAutoConfiguration
字面意思,启用自动配置,有此注解的类就可以把对象配置好,注入到spring容器中。
以前我们需要配置的东西,Spring Boot帮我们自动配置 (比如创建mybatis的对象放入到容器中)底层处理逻辑比较复杂
1.3@ComponentScan
组件扫描器 能扫描到程序中的注解 根据注解的功能创建bean对象 给属性赋值放入容器中等等 组件扫描器默认扫描的是 @ComponentScan 注解所在类的包和子包。 所以@ SpringBootApplication这个复合注解应该放在主包下面 这个规则约定俗成不建议打破 主类放在主包下面,其它子类放在子包下面即可2.CommandLineRunner和ApplicationRunner两个接口
应用场景:容器启动后执行一些内容。比如读取配置文件,数据库连接之类的,这时就可以实现接口和实现方法
执行时机:容器启动完成的时---容器启动末尾时间执行操作 接口与实现:用来模拟一下容器启动后的操作
public interface HelloService {
String sayHello(String name);
}
@Service("helloService")
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "我叫--->:"+name;
}
}
springboot主启动类 实现CommandLineRunner和重写run方法
@SpringBootApplication
public class Application implements CommandLineRunner {
@Resource
//模拟一下容器启动后的操作
private HelloService helloService;
public static void main(String[] args) {
System.out.println("创建容器前");
SpringApplication.run(Application.class, args);
System.out.println("容器对象创建之后");
}
@Override
public void run(String... args) throws Exception {
String str = helloService.sayHello("lisi");
System.out.println("调用容器中的对象="+str);
System.out.println("自定义的操作,比如读取文件, 数据库等等");
}
}
模拟测试结果:
标签:容器,主程序,String,SpringBootApplication,CommandLineRunner,注解,ApplicationRunner,publi 来源: https://blog.csdn.net/weixin_55941334/article/details/122714569