spring boot学习 初级入门

来源:互联网 发布:安卓调音软件 编辑:程序博客网 时间:2024/06/05 19:58
学习时只关心技术,开发时只关心业务
spring boot 
习惯优于配置原则
spring 简史:第一阶段:xml配置 第二阶段:注解配置 第三阶段:java配置
注解配置和xml配置哪个更好? 应用的基本配置(如数据库配置)用xml,业务配置使用注解
spring 是模块化的,意味着可以只使用需要的spring模块


使用@ComponentScan(包名)注解一个类时,该类为配置类(此类里面可以什么都不用写),该类会自动扫描包名下所有的@Service,@Component,@Repository,@Controller的类,并把它们注册为Bean
当在别的地方需要使用这些Bean时,这样使用:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(配置类的类名.class);
context.getBean(要使用的Bean的类名.class);
context.close();


java配置是通过@Configuration和@Bean来实现的
@Configuration声明当前类时一个配置类,相当于一个Spring配置的xml文件。
@Bean注解在方法上,声明当前方法的返回值是一个Bean。


Bean的初始化和销毁
@PostConstruct注解注释的方法,会在Bean的初始化完成之后执行,一般用来注释init方法
@PreDestory注解注释的方法,会在Bean销毁之前执行,一般用来注释destory方法


Filter和Interceptor的区别
Filter是Servlet容器支持的,而Interceptor是spring容器内的,是Spring框架支持的。我觉得这是根本的区别,很多其他的区别归根到底都是这个原因导致的,
比如Filter只能在web项目中使用,而Interceptor既可以在web项目中使用,也可以在Application和Swing中使用;
Filter无法使用到Spring中的任何资源,如Bean,事物,但是Interceptor则都可以使用,因为它是Spring框架支持的;
Filter只能在Servlet前后起作用,但是Interceptor可以深入到方法的前后,异常的抛出前后,具有更大的弹性,所以Spring框架的项目中,应该优先使用Interceptor。


为什么Spring boot框架中的Appliaction类要放在最外层目录?
个人理解:因为Application类含有@SpringBootApplication注解,这是一个组合注解,相当于@Configuration,@EnableAutoConfiguration和@ComponentScan
三个注解的组合,@ComponentScan注解是用来扫描包下的所有组件的,默认的搜索路径是该注解注释的类所在的包,所以Application要是想要扫描到整个项目中的组件,就只能放在最外层,否则放在任意一个包下,都只能扫描到该包下的组件。