Spring所有功能的设计和实现都是基于以下四大原则:
1.使用POJO进行轻量级和最小侵入式开发
2.通过依赖注入和基于接口编程实现松耦合
3.通过AOP和默认习惯进行声明式编程
4.使用AOP和模板减少模式化代码
我们常说的控制反转IOC和依赖注入在Spring环境下是等同的概念,控制反转就是通过依赖注入实现的。依赖注入就是指容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。依赖注入的目的就是为了解耦。
Spring IOC容器(applicationContext)负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中,Spring提供使用xml、注解、java配置、groovy配置实现Bean的创建和注入。
声明Bean的注解:
@Component组件,没有明确的角色
@Service,在业务逻辑层使用(service层)
@Respository在数据访问层使用(dao层)
@Controller在展现层使用(MVC-->Spring MVC)
注入Bean的注解:
@Autowired:Spring提供的注解
@Inject:JSR-330提供的注解
@Resource:JSR-250提供的注解
@Autowired、@Inject、@Resource可注解在set方法上和属性上,注解在属性上,代码更少层次更清晰
Java的配置:
通过@Configuration和@Bean来实现的
@Configuration:声明当前类是一个配置类,相当于一个Spring配置的xml文件,一般和@ComponentScan(对应的包名)一起组合使用,自动扫描包名下所有使用@Service、@Component、@Respository和Controller的类,并注册为Bean
@Bean:注解在方法上,声明当前方法的返回值为一个Bean
AOP:面向切面编程,主要是为了解耦,可以让一组类共享相同的行为