Spring详解

Posted zjc364259451

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring详解相关的知识,希望对你有一定的参考价值。

Spring

本文参考https://www.cnblogs.com/wmyskxz/p/8820371.html

了解Spring:

技术图片

技术图片

Spring 的优势

  • 低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
  • 声明式事务管理(基于切面和惯例)
  • 方便集成其他框架(如MyBatis、Hibernate)
  • 降低 Java 开发难度
  • Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)

Spring 能帮我们做什么

①.Spring 能帮我们根据配置文件创建及组装对象之间的依赖关系
②.Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
③.Spring 能非常简单的帮我们管理数据库事务
④.Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
⑤.Spring 还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
⑥.Spring 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)

Spring 模块

 技术图片

  • Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。
  • Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
  • AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
  • Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
  • Test模块支持使用JUnit和TestNG对Spring组件进行测试。

Spring  IOC(DI) 控制反转

IOC(Inversion of Control):其思想是反转资源获取的方向.

传统的资源查找方式要求组件向容器发起请求查找资源.

作为回应, 容器适时的返回资源. 而应用了 IOC 之后,

则是容器主动地将资源推送给它所管理的组件,

组件所要做的仅是选择一种合适的方式来接受资源.

这种行为也被称为查找的被动形式

Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。

采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中

编写第一个Spring的程序

1、首先要导入spring必要的jar包:

技术图片

2、加入配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!--class: 具体的类       id: 标注该标签的-->
    <bean id="mysql" class="com.zhiyou100.zjc.serivce.MysqlDao"/>
    <bean id="oracle" class="com.zhiyou100.zjc.serivce.OracleDao"/>
    <bean id="s" class="com.zhiyou100.zjc.serivce.Serivce">
    <!--name:要和定义的属性名一样  -->
        <property name="dao" ref="oracle"></property>
    </bean>

</beans>

 

3、测试

package com.zhiyou100.zjc.serivce;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //加载sprig配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        //获取指定的类对象
        Serivce s = (Serivce) ac.getBean("s");
        s.show();
    }

}

 

以上是关于Spring详解的主要内容,如果未能解决你的问题,请参考以下文章

详解Android WebView加载html片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

Spring boot:thymeleaf 没有正确渲染片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段