美文网首页
#☕️后端# 5. Spring

#☕️后端# 5. Spring

作者: Lshare_Blog | 来源:发表于2018-01-07 00:06 被阅读11次

    Spring

    轻量级控制反转和面向切面的容器框架。

    功能:

    1. 使用基本的JavaBean代替EJB(Enterprise JavaBean)

    优点:

    1. 低侵入性
    2. 高服用性
    3. DI有效降低耦合度
    4. AOP提供了通用任务的集中管理
    5. ORM(对象实体映射)和DAO简化对数据库的访问
    6. 高开放性,并不强制

    核心:

    spring_framework

    IoC

    Inversion of Control,控制反转,其另一个名字是依赖注入(Dependency Injection),就是有Ioc容器在运行期间,动态地将某种依赖关系注入到对象之中。

    所以,DI和IoC是从不同角度描述的同一件事情,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象的解耦。

    粘合剂,将对象之间的耦合交给IoC容器进行,从而达到解耦的目的。

    AOP

    面向切面编程,从动态角度研究。

    功能:将系统级别处理(日志管理、调试管理、事务管理、缓存等等)分离出来,模块化,而不影响业务逻辑。

    专门用于处理系统中分布于各个模块中的交叉关注点的问题。
    AOP 代理其实是由AOP框架动态生成的一个对象,该对象可作为目标对象使用。

    AOP使用:

    1. 定义普通业务组件
    2. 定义切入点
    3. 定义增强处理

    代理对象的方法 = 被代理对象的方法 + 增强处理

    AOP关键概念:

    1. 横切性关注点(Cross Cut Concern):一个独立的服务,不与其他业务逻辑耦合。可能遍布在系统的各个角落,也可能遍布在系统的处理流程之中。
    2. 切面(Aspect):一个关注点的模块化,生成对应的类,这个类就叫切面。切面可能会横切多个对象。
    3. 通知(Advice):对横切性关注点的具体实现。通知类型有:before、throw和after等。多数使用拦截器作为通知模型
    4. 连接点(Joi Point):程序执行中的某个特定点,比如某方法调用或处理异常时,也就是Advice在应用程序上执行的点或时机。
    5. 切入点(Point Cut):可以设定具体的方法上是否需要横切性关注点的实现。
    6. 织入(Weave):把切面连接到其他的应用程序类型或者对象上。
    7. 目标对象(Target Object):被一个或多个切面所通知的对象。
    8. AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约。
    9. 引入(Introduction):也被称为内容类型声明。声明额外的方法或者某个类型的字段。

    开发环境搭建

    直接通过IDEA新建一个Spring项目。

    Ioc注入

    1. Spring通过<null/>注入null值
    2. 通过ref="xxBean" 进行bean注入,通过value="xxValue" 进行值注入
    3. 通过<constructor-arg> 注入构造参数值
    4. 通过<property> 注入属性值
    5. 通过<list>注入list数据,通过<array> 注入array数据,通过<map> 注入map数据,通过<set> 注入set数据
    6. 设置lazy-init="true" 进行延迟初始化
    7. bean的作用域有两种,分别是 singletonprototype。singleton是默认的scope,其实现方式是通过注册表方式注册道单例缓存池。设置为prototype则每次向Spring容器请求获取Bean都返回一个全新的Bean。

    基于注解的配置

    开启方式:在spring的config文件的<beans> 下增加

    <context:annotation-config/> 
    <!--设置对指定的包名下的Spring注解生效-->
    <context:component-scan base-package=”com.demo”>
    

    使用:

    注解 描述 应用域
    @Required 进行依赖检查,只判断字段是否使用了setter注入,若无则抛出异常 bean属性的setter方法
    @Autowired 自动装配,默认按类型装配 bean属性的setter方法、非setter方法、构造函数、属性
    @Qualifier 实现类的类名 作为@Autowired的补充,当对应的属性有多个实现时,声明@Qualifier帮助其自动装配
    @Resource 默认按名称装配,当找不到与名称匹配的bean才会按类型装配 属性(属于JSR-250的注解)
    @Component、@Service、@Controller、@Repository @Component用于说明一个类是Spring容器管理的类,@Service、@Controller、@Repository是@Component的细化,分别代表服务层、控制层和持久层

    相关文章

      网友评论

          本文标题:#☕️后端# 5. Spring

          本文链接:https://www.haomeiwen.com/subject/jywunxtx.html