Spring
Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架 。Spring的两大核心是IOC容器和AOP模块。Spring的Bean工厂通过IOC思想来降低程序代码之间的耦合,并提供了面向切面编程(AOP)来实现业务之间的增强。 通过IOC容器创建对象和实现对对象的管理;通过AOP的动态代理来实现业务方法的增强。
什么是IOC
IOC(控制反转),它是把由程序代码直接操控的对象的调用权交给spring容器,通过容器来实现对象的创建和管理。通常,我们在A类中使用B类的方法,需要new一个B对象,这个过程是由我们自己来控制,IOC思想就是:把new对象的控制权交给Spring容器,不需要我们程序员自己new对象,就实现了控制的反转。
IOC是一种设计模式,实现该思想的方式是通过DI(依赖注入);就是IOC容器会把当前对象所需要的外部资源动态的注入到组件(Controller,Service等)之中;什么是注入,就是给属性赋值,Spring依赖的注入常用方式为:基于注解方式注入。
属性赋值
1.java类中必须有setter方法
2.java类中必须有无参构造器(默认存在)
3.依赖其他bean的类中,必须提供一个他依赖的bean的get×××()方法
Spring在bean与bean之间建立依赖关系的行为成为装配。Spring的容器虽然很强大,但本身是一个空壳,需要主动将bean放进去,并告诉它bean与bean之间的依赖关系,才能按照我们的要求完成装配。
基于注解方式实现依赖注入
1.要在applicationcontext.xml中引入context依赖
2.开启组件扫描:spring默认不使用注解装配bean,因此需要在applicationcontext.xml中配置,通过 context:component-scan元素开启Spring beans的自动扫描功能,就是在类上加@component注解,就把该类装配到容器中。
3.使用注解定义bean
4.依赖注入
2..开启组件扫描
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:context=“http://www.springframework.org/schema/context” http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!--导入约束--> <!--配置注解的支持--> <context:annotation-config /> <!--开启组件扫码功能--> <context:component-scan base-package="ghm.service"></context:component-scan> </beans>
3,使用注解定义bean
Spring常用注解:
@Controller 通常用于控制层 用于将控制层的类标识为Spring中的bean @Service 通常用于业务层 用于将业务层的类标识为Spring中的bean @Component 可以用于任何层 例如sercice层,dao层 @Repository 通常用于数据访问层 用于dao层的类标识为Spring中的bean,功能和Component一样
4.基于注解方式实现依赖注入
@Autowired @Resource 两者都是自动装配,区别在于: @Autowired:自动装配先通过类型(byType)进行装配,再通过名称(byName)进行装配。必须要求这个对象在spring容器中存在,如果Autowired不能唯一自动装配上属性,需要结合@Qualifier(value="xxx"")来配合使用 @Resource: 自动装配先通过名称(ByName)进行装配,如果找不到再通过类型(byType)进行装配