开启SSM框架学习 之 Spring(一)

Spring

学习(一)
前言: 根据Spring学习笔记整理。第一部分


以下是本篇文章正文内容,仅供参考


1. Spring 含义

要点【轻量级、容器、集成】

spring是开源的轻量级企业开发应用框架

降低企业开发难度

spring提供一站式解决方案,每一层都有自己的解决方案

2.Spring的优势

  • 开源轻量级

  • 提供AOP功能

  • 提供IOC\AOP\DI容器

  • 提供集成测试环境

  • 方便集成其他框架

3.Spring模块

Spring架构图
重点掌握以下几个部分:

  • 集成测试环境模块
  • 核心模块(Beans\Core)
  • AOP模块(aop\aspectj)
  • 数据访问和集成
  • web模块

4. schema & dtd

  • schema

    • 中文含义:提要,提纲,就是模板的意思。
    • 作用:约束XML该如何编写,约束配置文件中的标签书写规范
  • dtd

    • 和schema一样,用于约束XML如何编写,但是已经很少使用了。
  • 在Eclipse中关联schema

关联schema之后,输入尖括号,即可显示提示。

WIndows -> Preferences

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49yccdPM-1600429714788)(assets/1585706290375.png)]

XML Catalog -> Add

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHNLi5Nh-1600429714790)(assets/1585706371628.png)]

File System.. -> 找到本地schema本地路径,引入即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPW1QudV-1600429714792)(assets/1585706484759.png)]

Spring入门步骤(案例)

搭建Spring环境步骤(使用框架的通用步骤)

  • 导入spring的jar
  • 编写配置文件
  • 使用

1. 导入jar包

(暂时导入三个,需要再导入其它的。按照console调试查看,缺少什么导什么)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Dd0RBsP-1600429714795)(assets/1585706570264.png)]

2. 配置文件

注意:配置文件要和src分开。因此,在工程根目录下,创建新的文件夹存放。引用的时候通过指定classpath即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkpYGSly-1600429714796)(assets/1585706585096.png)]

xml文件配置参考 :在这个里面可以拿到xml头。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1u5bWVXm-1600429714799)(assets/1585706676994.png)]
xml文件配置代码:

<?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">
     <!-- 告诉容器需要管理的对象 -->
     <bean name="userService" class="com.neu.service.UserServiceImpl"></bean>
</beans>
public class _01HelloWorld {
	//spring步骤
	    //导入jar  (beans\core)
	    //编写配置文件
	    //使用
	public static void main(String[] args) {
		Resource resource = new ClassPathResource("applicationContext.xml");
		BeanFactory beanFactory = new XmlBeanFactory(resource);
	}
}

Spring 相关概念【重要】

  • 容器(存放对象,提供注册(放入容器)、获取(得到对象)的操作。)

    相当于生活中存放东西的器皿,在程序的角度就是用来存放对象(bean)的容器。涉及到对象的装配、取出以及管理等操作

    ps:存放的时候,使用配置文件(xml)进行设置。

    案例: 指定容器管理对象

    <?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">
         <!-- 告诉容器需要管理的对象 -->
         <bean name="userService" class="com.neu.service.UserServiceImpl"></bean>
    </beans>
    
  • IOC 控制反转

    是一种思想,就是将原来在程序手动创建的对象,交给spring容器来处理,使用的时候直接从容器中获取即可。

    • 正向控制:需要什么对象自行来创建
    • 反向控制:需要的对象不用手动创建,直接从容器中获取,不用关心对象创建的过程。统一把对象的创建权限交给容器来处理。

    案例: 使用 正向控制 和 IOC 两种方式创建 userService 对象

    正向控制:

    public static void main(String[] args) throws Exception{
      // 正向控制
      UserService userService = new UserService();
      System.out.println(userService);
    }
    

    反转控制(IOC):

    public static void main(String[] args) throws Exception{
     
      //IOC
      //将对象的创建权利交给容器来处理。
      Resource resource = new ClassPathResource("applicationContext.xml");
      BeanFactory beanFactory = new XmlBeanFactory(resource);
    
      //根据名字获取
      UserService userService = (UserService) beanFactory.getBean("two");
      System.out.println(userService);
    }
    
    
  • DI

    在对象创建过程中,将依赖的属性(简单值、对象、集合)通过配置方式告诉容器来给自己设置。(一句话:对象需要什么属性,容器会自动赋值)【后续一整块内容的,现在暂时简单了解一下即可。】

  • AOP

    AOP[Aspect-Oriented programming] 是指 面向切面编程(直接翻译),主要概念有:切点、切面(前置通知、后置通知、环绕通知),先看看概念。最后在来看。是Spring中很重要的一部分。应用场景统一日志处理(logging–log4j2)、统一事务处理(transaction\tx-jar包表示)、性能监控(performance monitoring)、权限(privileges)等等【后续一整块内容的,现在暂时简单了解一下即可。】

BeanFactory

  • BeanFactory的作用(含义)

    spring容器的最基本接口,用来配置、创建、管理对象的容器。

  • BeanFactory管理bean的原理

    • 通过Resource具体类读取XML配置文件

    • 解析配置文件(XML)内容

    • 解析<bean>标签

    • 通过反射创建对象(无参构造器)后放入容器 [必须要提供一个无参构造器]

    • 对外提供getBean()的方法获取容器

案例

<?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">
     
     <!-- 告诉容器需要管理的对象 -->
     <!-- name属性值不能重复 -->
     <!-- id和name作用一样,但是name可以通过,号赋值多个 -->
     <bean name="userService,one,two" class="com.neu.service.UserServiceImpl"></bean>
     <!--<bean name="otherUserService" class="com.neu.service.UserServiceImpl"></bean>-->
</beans>
package com.neu.service;
public interface UserService {

}
package com.neu.service;
public class UserServiceImpl implements UserService {
}
public class _02BeanFactory {
	
	public static void main(String[] args) throws Exception{
		//IOC
		   //将对象的创建权利交给容器来处理。
		Resource resource = new ClassPathResource("applicationContext.xml");
		BeanFactory beanFactory = new XmlBeanFactory(resource);
		  
		
		//根据名字获取
		UserService userService = (UserService) beanFactory.getBean("two");
		System.out.println(userService);
		    
		//根据类型获取
		   //注意点:通过类型查找,如果找到多个会报错
		//UserService userService = beanFactory.getBean(UserService.class);
		//System.out.println(userService);
		
		//根据名字和类型获取(建议)
		//UserService otherUserService= beanFactory.getBean("otherUserService",UserService.class);
		//System.out.println(otherUserService);
	}
}

小结:

XML配置的规则

<!-- 使用bean标签  告诉容器需要管理的对象 -->

<!-- name属性值不能重复,同个name不能给多个bean使用,但是一个name中能有多个值 -->
<!-- id和name作用一样,但是name可以通过,号赋值多个 -->
<bean name="userService,one,two" class="com.neu.service.UserServiceImpl"></bean>
<!--<bean name="otherUserService" class="com.neu.service.UserServiceImpl"></bean>-->

getBean方式(三种)

  • 根据名字获取getBean(名字)
  • 根据类型获取 getBean(类型)
  • 根据名字和类型获取(建议) getBean(名字,类型) 前面两种需要强转类型,这种不用。

常见异常

  • 找到多个异常
  • 找不到异常
  • 创建容器的时候提示name已经存在异常
  • 等等,要开错误的关键信息

Spring xml 的配置bean

1. id、name

  • 相同点:
    • 都可以被getBean获取到
    • id 和 name都必须唯一,,同个name不能给多个bean使用,但是一个name中能有多个值 。
  • 不同点:
    • name可以通过,号隔开赋值多个

2. import

[用来合并多个xml]

  1. 含义:

    将一个大的配置文件拆解成多个文件,然后通过import整合一起。

  2. 案例

beanFactory.xml 【路径: config(图标有包的文件夹)/beanFactory.xml】

<?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">
     
     <!-- 告诉容器需要管理的对象 -->
     <!-- name属性值不能重复 -->
     
     <!-- id和name作用一样,但是name可以通过,号赋值多个 -->
     <bean name="userService" class="com.neu.service.UserServiceImpl"></bean>
     <!-- <bean name="otherUserService" class="com.neu.service.UserServiceImpl"></bean> -->
</beans>

在applicationContext.xml中使用import导入在类路径下的配置文件

applicationContext.xml

<!-- file:文件系统(了解) -->
<!-- classpath:从classpath(类路径)下查找,推荐使用该方法 -->
<import resource="classpath:beanFactory.xml"/>
```

在applicationContext.xml中使用import导入在类路径下的配置文件

applicationContext.xml

<!-- file:文件系统(了解) -->
<!-- classpath:从classpath(类路径)下查找,推荐使用该方法 -->
<import resource="classpath:beanFactory.xml"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值