Spring_boot 入门学习00

题外话:

若是说spring boot 的话,就应该先说spring ,毕竟spring算是spring boot 的爸爸(按辈分说)。。。java

spring 做为一个全局性框架 ,很是优秀。能够无缝 链接其余的 框架 好比  持久层框架的 hibernate 、mybatis 。web

所谓全局性,应该类比成一个 管家的身份, 它 帮你干了不少 繁琐的事情,好比之前,咱们若是想生成一个对象,而且想往里面设置初始值,spring

好比 web 应用中,典型的mvc结构json

controller 层中 持有 service 的示例,咱们本身的作法就是new service() 赋值给 controller 中的对象。有了spring 把 这个对象 交给spring 来管理,而后咱们只需在这个对象上面写上注解,就能让spring帮咱们完成初始化的任务。(ps:多是我尚未多少项目经验,我感受这个  “属性注入“  感受做用不是很明显,等未来若是有新的体验,或者有什么应用场景就写出来吧,暂时的话,就感受帮咱们初始化,并无省多大功夫,或者说,做为spring的 核心之一 有点夸大???),固然还能从xml文件中进行配置 注入(构造器注入)。数组

不过 因为spring 比较的繁琐(比起struts 应该是好的了,毕竟做者就是为了 “装逼”  说struts 太笨重,才写出来的 这个框架。。。真的厉害)。主要仍是 xml配置比较多。所以spring boot 就 来了。mybatis

spring boot

Spring  boot 其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。mvc

                                                                                                                   ------百度百科app

spring boot  倡导:习惯优于配置。 框架

好了,废话不说了,接下来就先讲讲入门吧,这篇博文主要是收集,记录,一些 注解的意义和使用的地方,由于我看了spring boot 2天了,都是看着别人的教程,写了这个注解,那个注解,关了网页,就不知道这究竟是TM 什么鬼,这个注解的做用是什么,为何要这么写,也是不怎么明白,所以注解就先放在第一天说,最起码眼熟了,等后面慢慢学习了,也就知道是什么回事了。学习

spirng boot 注解

@ComponentScan

 component 是 组件, scan 是扫描 。 意思就是 扫描组件,这个注解主要是用来 进行扫描一些  带有注解的类,让 框架 有一个全局性的把握。(你要不让他扫描,有什么类是干什么的 ,它也是不可能知道的。)

举个栗子:

ps:纯粹是为了做用,没必要早已经是否能看懂其余配置。等下一节应该就能彻底看懂了。

这个是 入口。 上面没有  @componentScan 注解,

下面就是写了一个普通方法, requestMapping 总知道是什么吧???!!!

好了 启动访问如下这路径

 

页面并不能访问的到。

下面加上这个注解:

你看,这样就能访问的到了。

固然,这个注解还有一个属性 就是选择 扫描的范围 ,若是不写的话就 默认只扫描本包,若是写路径,就扫描路径下面的包,子包中的全部类。

用法:@ComponentScan(basePackages={"com"}) (basePackages是一个数组形式的。能够扫描多个包)

这个注释通常 都用在主入口处吧。。。

 

@EnableAutoConfiguration

@EnableAutoConguration是和自动化配置相关的东西。

Enable auto-configuration of the Spring Application Context, attempting to guess and configure beans that you are likely to need. Auto-configuration classes are usually applied based on your classpath and what beans you have defined.
Auto-configuration tries to be as intelligent as possible and will back-away as you define more of your own configuration. You can always manuallyexclude() anyconfiguration that you never want to apply (use excludeName() if you don'thave access to them). You can also exclude them via thespring.autoconfigure.exclude property. Auto-configuration is always appliedafter user-defined beans have been registered.
The package of the class that is annotated with @EnableAutoConfiguration has specific significance and is often used as a 'default'. For example, it will be usedwhen scanning for@Entity classes. It is generally recommended that you place@EnableAutoConfiguration in a root package so that all sub-packages and classescan be searched.
Auto-configuration classes are regular Spring Configuration beans. They are located using the SpringFactoriesLoader mechanism (keyed against this class).Generally auto-configuration beans are@Conditional beans (mostoften using @ConditionalOnClass and@ConditionalOnMissingBean annotations).

这是官网的英文。

贴点别人的解释:

首先,顾名思义,@EnableAutoConguration是和自动化配置相关的东西。

官网的第一段话主要是说,Spring应用上下文的自动化配置,尝试去猜想和配置你须要的bean。这些被自动化配置的类一般在classpath路径下,或者是你本身定义的bean。

第二段话主要是说,你可使用exclude来排除那些你不想被自动化配置的类。

第三段是讲:被@AutoConfiguration注解的类所在的包有着特殊的意义,他们一般被认为是默认的包,并对其及下属的包进行扫描。

第四段前半句是说,被自动配置的类一般是在@Configuration里面配置的类。

大概的意思就是,他舍弃了 xml配置,而是去猜测你如何去配置。

根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减小了开发人员的工做量。

这个真的是挺厉害的。 

写在主入口的类上。

@Configuration 

@Configuration可理解为用spring的时候xml里面的<beans>标签。

至于 beans 标签...再搜吧。

 

@SpringBootApplication 

这个是以上三个的合体。这是通常最开始学习时,懒人配置,直接让spring boot 自动帮你配置好,咱们直接写代码就好,无需去多余的配置。

写在主入口的类上。

@RestController

@Controller 

定义这个类是一个 controller层。

在类上面使用。

@ResponseBody

定义这个方法是返回json字符串的。

在方法上使用。

@RestController 其实就是以上 两者的结合。声明他是一个控制层,且是返回的都是json的,或者是null的,或者是void方法。

@Autowired

这个是注入的注解,就是spring 帮你把实例对象地址交给变量,完成初始化。

@Value

这个是跟自动注入有点相似,不过注入的是 properties文件中的,支持el表达式形式。

并且这个priperties 文件 必须是 application.properties。

这个不用写出set方法

@ConfigurationProperties

这个也是自动注入properties ,跟上面的value 注解相似,不过毕竟@value 一个一个注入,要写不少,很累的。

这个注解能够将整个properties 封装到javabean中 。

注意:须要写出set方法。

@PropertySource

当咱们想使用其余properties文件做为 常量,好比jdbc,log4j,毕竟这样分着更明显。所以可使用这个注解进行显示指定某个 properties 

用法:@PropertySource("classpath:xxxxx.properties")

 

暂时使用的只有这些,由于我也是刚开始学习。用到后就慢慢添加。毕竟不懂注解,会很烦。。。

未完待续.....

相关文章
相关标签/搜索