spring boot(2)-@SpringBootApplication详解

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

启动类

[java]  view plain  copy
  1. package hello;  
  2.   
  3. import org.springframework.boot.*;  
  4. import org.springframework.boot.autoconfigure.*;  
  5.   
  6. @SpringBootApplication  
  7. public class Run{  
  8.     public static void main(String[] args) throws Exception {  
  9.         SpringApplication.run(Run.class, args);  
  10.     }  
  11. }  
这个Run.java是一个独立的spring boot启动类,这里不应该有业务功能,上一篇的hello world业务代码应该写在一个单独的@Controller里面,和上一篇相比,这里用@SpringBootApplication替换了@EnableAutoConfiguration。

@SpringBootApplication

@Configuration:表示将该类作用springboot配置文件类。

@EnableAutoConfiguration:表示实现自动配置一个功能 ,程序启动时,自动加载springboot默认的配置。

@ComponentScan:表示程序启动是,自动扫描当前包及子包下所有类。

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


在eclipse的代码中 按 crtl+左键 点击@SpringBootApplication注解可以查看他的源码,如下
[html]  view plain  copy
  1. @Target(ElementType.TYPE)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Documented  
  4. @Inherited  
  5. @SpringBootConfiguration  
  6. @EnableAutoConfiguration  
  7. @ComponentScan(excludeFilters = {  
  8.         @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),  
  9.         @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })  
  10. public @interface SpringBootApplication  
前四个注解:是元注解,用来修饰当前注解,就像public类的修饰词,没有实际功能,如果不打算写自定义注解,不需要了解
后三个注解:是真正起作用的注解,包括
@SpringBootConfiguration:当前类是一个配置类,就像xml配置文件,而现在是用java配置文件,效果是一样的。下面会详解。
@EnableAutoConfiguration:上篇已经讲了
@ComponentScan:用注解配置实现自动扫描,默认会扫描当前包和所有子包,和xml配置自动扫描效果一样,@Filter是排除了两个系统类

@SpringBootConfiguration和@Bean

[java]  view plain  copy
  1. package hello;  
  2.   
  3. import org.springframework.boot.SpringBootConfiguration;  
  4. import org.springframework.context.annotation.Bean;  
  5.   
  6. @SpringBootConfiguration  
  7. public class Config {  
  8.     @Bean  
  9.     public String hello(){  
  10.         return "Hello World";  
  11.     }  
  12. }  

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

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

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

[html]  view plain  copy
  1. <bean id="hello" class="String"></bean>  

SampleController.java

[java]  view plain  copy
  1. package hello;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.stereotype.*;  
  5. import org.springframework.web.bind.annotation.*;  
  6.   
  7. @Controller  
  8. public class SampleController {  
  9.     @Autowired  
  10.     String hello;  
  11.       
  12.     @RequestMapping(value="/")  
  13.     @ResponseBody  
  14.     String test(){  
  15.       return hello;  
  16.     }  
  17.   
  18.      
  19. }  

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

运行项目

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


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值