Spring 特性总结

Spring总结 1.什么是Spring

Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发 的复杂性而创建的。Spring 的核心是控制反转(IoC)和面向切面编程(AOP)。Spring 是可 以在 Java SE/EE 中使用的轻量级开源框架。

2.Spring的作用

(1)解耦合,将对象创建和管理对象之间的关系交给spring管理

(2)提供AOP的支持

(3)声明式事务的支持

(4)方便集成各种框架:Spring 像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把这个插头放入插线板。

3.IOC和DI IOC DI解析 控制反转:是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理。

Spring 框架使用依赖注入(DI)实现 IoC。Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称 为 Bean。Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式 来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和

4.spring的实现步骤

定义service的接口和其实现类

定义spring的配置文件,bean标签是创建该类的对象

       <bean id="customerService" class="com.yuan.service.impl.CustomerServiceImpl">
        <property name="customerDao" ref="customerDao"/>
       </bean>

//测试增加方法
public void testadd(){
        String config="applicationContext.xml";//配置文件
        ApplicationContext ac=new ClassPathXmlApplicationContext(config);//获取容器对象
        CustomerService service= (CustomerService) ac.getBean("customerService");//获取需要的对象
        Customer customer=new Customer();
        customer.setCust_id(110);
        customer.setCust_name("");
        service.addCustomer(customer);
    }

5.DI的实现方式之XML实现

(1)XML:set注入,构造注入

简单类型的set注入:Java基本数据类型和String类型都是简单类型

<bean id="" class="">
        <property name="属性名字" value="值"/>
</bean>

引用类型的set注入

<bean id="" class="">
        <property name="属性名字" ref="引用对象"/>
</bean>

6.引用类型的自动注入

byName:根据名称自动注入

byName方式引用类型属性自动注入注意被调用者bean标签的id属性必须和调用者的javaBean类的属性名相同

<bean id="" class="" autowire="byName">
	<property name="" value=""/>
	<property name="" value=""/>
</bean>

<bean id="这个名称与实体类的属性名相同" class="">
	<property name="" value=""/>
</bean>

byType: 根据类型自动注入

要符合以下三点中的某一点: 被调用者bean的class属性指定的类要和调用者javaBean类的那个引用变量类型相同 或者是那个类的实现类 或者是那个类的子类

<bean id="" class="" autowire="byType">
	<property name="" value=""/>
	<property name="" value=""/>
</bean>

<bean id="与引用类型相同或者子类,实现类" class="">
	<property name="" value=""/>
</bean>

7.DI的实现方式之注解

对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 bean 实例。Spring 中使用注解, 需要在原有 Spring 运行环境基础上再做一些改变。 需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。

//组件扫描器
<context:component-scan base-package=""/>

容器启动会扫描包及其子包中的注解,当然也会扫描到子包下级的子包。

定义 Bean 的注解@Component

需要在类上使用注解@Component

@Component("对象名称")
public class Customer

@Repository 用于对 DAO 实现类进行注解 @Service 用于对 Service 实现类进行注解 @Controller 用于对 Controller 实现类进行注解

这三个注解与@Component 都可以创建对象,但这三个注解还有其他的含义,@Service 创建业务层对象,业务层对象可以加入事务功能,@Controller 注解创建的对象可以作为处 理器接收用户的请求。

简单类型属性注入@Value

需要在属性上使用注解@Value,该注解的 value 属性用于指定要注入的值。

@Value("XXX")
private String name;

byType 自动注入@Autowired

在引用类型上加入@Autowired,然后给引用类型使用简单类型的属性注入即可

需要@Autowired所注入的类与实体类一样

byName 自动注入@Autowired 与@Qualifier

@Autowired
@Qualifier
属性

需要@Qualifier(名称)与@Component(名称)相同

Spring提供了对 jdk中 @Resource 注解的支持。@Resource 注解既可以按名称匹配Bean, 也可以按类型匹配 Bean。默认是按名称注入。

8.AOP编程

AOP(Aspect Orient Programming),面向切面编程。面向切面编程是从动态角度考虑程 序运行过程。AOP 底层,就是采用动态代理模式实现的。采用了两种代理:JDK 的动态代理,与 CGLIB 的动态代理。

(1) 切面(Aspect) 切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面 是通知(Advice)。实际就是对主业务逻辑的一种增强。

(2) 连接点(JoinPoint) 连接点指可以被切面织入的具体方法。通常业务接口中的方法均为连接点。

(3) 切入点(Pointcut) 切入点指声明的一个或多个连接点的集合。通过切入点指定一组方法。 被标记为 final 的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不 能被增强的。

(4) 目标对象(Target) 目 标 对 象 指 将 要 被 增 强 的 对 象 。 即 包 含 主 业 务 逻 辑 的 类 的 对 象 。 上 例 中 的 StudentServiceImpl 的对象若被增强,则该类称为目标类,该类对象称为目标对象。当然, 不被增强,也就无所谓目标不目标了。

(5) 通知(Advice) 通知表示切面的执行时间,Advice 也叫增强。上例中的 MyInvocationHandler 就可以理 解为是一种通知。换个角度来说,通知定义了增强代码切入到目标代码的时间点,是目标方 法执行之前执行,还是之后执行等。通知类型不同,切入时间不同。 切入点定义切入的位置,通知定义切入的时间。

点赞

本文标签: Spring

版权声明:本博客所有文章除特别声明外,本文皆为《网络赚》原创,转载请保留文章出处。

本文链接:Spring 特性总结 - http://www.wangluosz.com/article/104

1

发表评论

电子邮件地址不会被公开。 必填项已用*标注