Spring 自己重温一下 Spring的基础

Spring 简单特性

轻量级 零配置编程 API 使用简单

面向Bean 只需要编写非常普通的Bean

松耦合 充分利用了AOP 的思想

万能胶 与主流框架无缝集成

设计模式 将Java中经典的设计模式运用得淋漓尽致

Spring就是 简化开发

autowiring的实现过程:

a.    对Bean的属性迭代调用getBean方法,完成依赖Bean的初始化和依赖注入。

b.    将依赖Bean的属性引用设置到被依赖的Bean属性上。

c.     将依赖Bean的名称和被依赖Bean的名称存储在IoC容器的集合中。

Spring IoC容器的autowiring属性自动依赖注入是一个很方便的特性,可以简化开发时的配置,但是凡是都有两面性,自动属性依赖注入也有不足,首先,Bean的依赖关系在配置文件中无法很清楚地看出来,对于维护造成一定困难。其次,由于自动依赖注入是Spring容器自动执行的,容器是不会智能判断的,如果配置不当,将会带来无法预料的后果,所以自动依赖注入特性在使用时还是综合考虑。

IOC容器 存的是JAVA bean  

2.IOC是什么?(面试题)

ioc(inverse of control )控制反转:所谓控制反转就是把对象(bean)对象和维护对象(bean)之间的关系的权利转移到Sqring容器中去了(ApplicationContext.xml)而程序本身不在维护了

3.DI是什么?(面试题)

di(dependency injection)依赖注入:实际上DI和IOC是同一个概念,因为在ApplicationContext.xml配置文件中bean和bean之间通过ref来维护的时候是相互依赖的,所以又叫做依赖注入。也就是控制反转。

AOP 核心思想 解耦 面向切面编程 不如说面向规则编程 关注点切面 也就关注点规则

列如 事物案例

开启一个事务

执行提交事务

事务回滚

关闭事务

这种有规律的东西 就可以认为它就是一个固定的规则 这时候 我们就单独把这个具有

一定规律的规则 单独分离出来 作为一个独立模块 这就一个切面 解耦

列如 小汽车

车架 来自车架生产加工 专业化 专人做专事

轮胎 轮胎生成产商

发动机 来自国外

组装规则在生产之前就订好规则了

AOP 就是来源于这种思想 面向切面就是面向规则编程 这个句话 解耦

列如 日志管理

Authentication 权限认证

Logging 日志

Transctions Manager 事务

Lazy Loading 懒加载

Context Process 上下文处理

Error Handler 错误跟踪 异常捕获机制

Cache 缓存

简单介绍一下spring,自己也重温一下
第一个小工厂先暂时不用maven,下一个会用maven来来配置

jar包只需要一个,spring版本为2.5(暂时为2.5,后续更新,基本核心都是一样的),引入spring.jar到lib,如下:

https://img4.mukewang.com/5af3bdd20001686102430071.jpg

在src下新建applicationContext.xml文件,结果如下:

14eabe9aee052faff8e01fd80a296845076.jpg

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans 

           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

           http://www.springframework.org/schema/context

           http://www.springframework.org/schema/context/spring-context-2.5.xsd">

           

    <!-- 把一个类放入到spring容器中,该类就称为bean -->

    <!-- 描述一个类 id 唯一标示 class 类名 -->

    <bean id="helloWorld" class="com.hemayun.createobject.HelloWorld"></bean>

 

</beans>

 

 

在com.hemayun.createobject包下新建类HelloWorld.java :

package com.hemayun.createobject;

 

public class HelloWorld {

 

    public HelloWorld() {

        System.out.println("HelloWorld...");

    }

 

    /**

     * 

     */

    public void hello() {

        System.out.println("Hello world!");

    }

}

 

测试:

 

package com.hemayun.createobject;

 

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class HelloWorldTest {

 

    @Test

    public void testHelloWorld() {

        

        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        

        HelloWorld hello = (HelloWorld)context.getBean("helloWorld");

        hello.hello();

    }

}

这样运行junit,就成功了

转载于:https://my.oschina.net/u/3940162/blog/1927473

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值