首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot(2)-@SpringBootApplication详解

spring boot(2)-@SpringBootApplication详解

作者头像
Java编程指南
发布2019-08-02 16:00:13
4790
发布2019-08-02 16:00:13
举报

@SpringBootApplication是spring boot最重要的一个注解,用于快捷配置启动类。

import org.springframework.boot.*;

import org.springframework.boot.autoconfigure.*;

public static void main(String[] args) throws Exception {

SpringApplication.run(Run.class, args);

这个Run.java是一个独立的spring boot启动类,这里不应该有业务功能,上一篇的hello world业务代码应该写在一个单独的@Controller里面,和上一篇相比,这里用@SpringBootApplication替换了@EnableAutoConfiguration。

@EnableAutoConfiguration:只是实现自动配置一个功能,具体参考上一篇。

@SpringBootApplication:是一个组合注解,包括@EnableAutoConfiguration及其他多个注解。

在eclipse的代码中 按 crtl+左键 点击@SpringBootApplication注解可以查看他的源码,如下

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@ComponentScan(excludeFilters = {    @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),    @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication

前四个注解:是元注解,用来修饰当前注解,就像public类的修饰词,没有实际功能,如果不打算写自定义注解,不需要了解

后三个注解:是真正起作用的注解,包括

@SpringBootConfiguration:当前类是一个配置类,就像xml配置文件,而现在是用java配置文件,效果是一样的。下面会详解。

@EnableAutoConfiguration:上篇已经讲了 @ComponentScan:用注解配置实现自动扫描,默认会扫描当前包和所有子包,和xml配置自动扫描效果一样,@Filter是排除了两个系统类

import org.springframework.boot.SpringBootConfiguration;

import org.springframework.context.annotation.Bean;

@SpringBootConfiguration:说明这是一个配置文件类,它会被@ComponentScan扫描到

@Bean:就是在spring配置文件中声明了一个bean,赋值为hello world,String方法类型就是bean的类型,hello方法名是bean的id

如果是用xml配置文件来声明bean,如下图

<bean id="hello" class="String"></bean>
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.*;

import org.springframework.web.bind.annotation.*;
public class SampleController {
  @RequestMapping(value="/")

把上一篇的hello world业务功能独立出来,在这里注入了spring容器中的那个String类型的Bean,并且打印到页面

现在的项目结构如下,共三个文件,启动类、配置类、业务类,结构更分明了。

通过Run.java的main方法启动项目,访问http://localhost:8080/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java编程指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档