spring框架本身有四大原则:
1)使用pojo进行轻量级和最小侵入式开发。
2)通过依赖注入和基于借口编程实现松耦合。
3)通过AOP和默认习惯进行声明式编程
4)使用AOP和模板(template)减少模块化代码。
一、依赖注入
1.点睛
控制翻转IOC和依赖注入DI,在spring环境中是相同的概念。控制翻转是通过依赖注入实现的 。所谓的依赖注入指的是容器负责创建对象和维护对象捡的依赖关系,而不是通过对象负责自己的创建和解决自己的依赖。
依赖注入的主要目的是 解耦 ,体现一种组合的概念。相对于继承,组合的耦合度将大大降低。
spring IOC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到需要的Bean中。spring 提供使用xml 、注解、Java配置、groovy 配置实现Bean的创建和注入。
无论是xml 、注解、还是Java配置,都称作配置元数据。元数据:描述数据的数据。元数据本身不具备任何可执行的能力,只能通过外界代码来对其解析后进行操作。spring容器解析这些配置元数据惊醒Bean初始化、配置和管理依赖。
声明Bean的注解:
@Component 组件 ,没有明确的角色
@Service 在业务逻辑层(Service层)使用
@Repository 在数据访问层(DAO)使用
@Controller 在展现层(MVC——》Spring MVC)使用
注入Bean的注解,一般情况下通用。
@Autowired Spring提供的注解
@Inject JSR-330提供的注解
@Resource JSR-250提供的注解
@Autowired 、@Inject 、 @Resource 可注解在set方法上或者属性上。注解在属性上优点是代码少,层次清晰。
二、Java配置
Java配置是 spring 4.x 推荐的配置方式,可以完全代替xml配置;Java配置也是springBoot 推荐的配置方式。
Java配置是通过@Configuration 和 @Bean 来实现的。
@Configuration 声明当前类是配置类,相当于一个spring配置的xml文件。
@Bean 注解在方法上,声明当前方法的返回值为一个Bean。
推荐的配置原则:全局配置使用Java配置(如数据库相关配置、MVC相关配置),业务Bean的配置使用注解配置(@Service 、 @Component 、 @Repository 、 @Controlle).
三、AOP
AOP:面向切面编程。相对于OOP面向对象编程。
Spring 的AOP的存在目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中只能通过集成类和实现接口,来使代码耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足
Spring 支持AspectJ的注解式切面编程。
(1)使用@Aspect 声明是一个切面。
(2)使用@After、@Before 、@Around 定义建言(advice),可以直接拦截规则(切点)作为参数。
(3)其中@After、@Befour 、@Around 参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定制拦截规则,然后在@After 、 @Before 、@Around 的参数中调用。
(4)其中符合条件的每一个被拦截处为连接点(JoinPoint)
注解:注解本身是么有功能的,就和xml一样。注解和xml都是一种元数据,元数据就是解释数据的数据,这就是所谓的配置。注解的功能来自用这个注解的地方。