Spring是什么:
在J2EE中,Spring实际上可以被理解为是我们进行开发工作中的一种标准,但是它同样存在问题:- 配置文件超级多
- 与其它第三方框架整合麻烦问题多
注解:
是Spring在发展过撤各种以减少配置为主要目标,推出的解决方式:
- 推出@Component, @Service,@Repositiry,@Controller注解在类上声明Bean
- @Configuration,@Bean的Java配置来替代xml配置
- Spring Boot
Spring Boot 特点:
- 配置少,基本使用默认配置
- 项目搭建速度快,无需整合第三方框架
- 可完全不使用xml配置,只使用自动配置(通过Spring 4.x 的@Conditional注解来实现)和Java config
- 内嵌servlet,可用jar包运行
- 一个单纯的基于Spring的应用
Spring基础
xml配置:
xml配置的Bean,繁杂注解配置:
声明Bean的注解(如@Component,@Service),大大减少了配置量。应用的基本配置(如数据库配置)用xml,业务配置用注解。- java配置
现在使用简单的POJO(plain old java object,无限制的普通java对象)来进行企业化开发,每一个被Spring管理的java对象都称之为Bean。Spring使用Ioc容器来初始化对象,解决对象之间的依赖管理和对象使用。
Spring框架本身有四大原则:
- 使用POJO进行轻量级和最小侵入式开发
- 通过依赖注入和基于接口编程实现松耦合
- 通过AOP和默认习惯进行声明式编程
- 通过AOP和模板(template)减少模块化代码
我们经常说的控制翻转(inversion of control-IOC)和依赖注入(dependency injection-DI)在Spring环境下是等同的概念,控制翻转是通过依赖注入实现的。所谓的依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身自己的创建和解决自己的依赖。比如典型的:
@Autowired
MyBean bean;
而不是自己new出一个对象
声明Bean的注解:
@Autowired,Spring提供的注解
注入Bean的注解可以注解在set方法上或者属性上,不过最好是在属性上,优点是代码更少,层次更清晰。
@Configuration声明当前类是一个配置类。
使用@ComponentScan,自动扫描包名下所有使用@Service,@Component,@Compository,@Controller的类,并注册为Bean
java配置是通过@Configuation和@Bean来实现的。
@Configuration声明当前类时一个配置类,相当于一个Spring配置的xml文件。
全局配置使用java配置(如数据库相关配置,MVC相关配置),业务Bean的配置使用注解配置。
注解:
注解本身是没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓的配置。
AOP
面向切面编程,相对于OOP面向对象编程
AOP的存在的目的是为了解耦:
AOP可以让一组类共享相同的行为。在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足。