编程语言
首页 > 编程语言> > 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