2020-11-30课堂笔记-Spring入门

1.什么是Spring

spring是为了解决企业级开发中用户数量多数据规模大功能多性能要求安全性要求等问题而推出的轻量级的开源的java开发的框架
03年兴起的至今已有17年

Spring 的核心是控制反转IoC容器面向切面编程(AOP实现)

Mybatis框架->dao层(有其他替代框架)

Spring框架->中间层即服务层、业务逻辑层
(没有其他框架代替Spring,足见Spring的强大)
IoC就是DI,只是从不同的角度

2.Spring的作用

主要作用是:解耦(使用IoC降低模块间的耦合,对象间的耦合),不再由自己创建对象(即摒弃了 类名 对象名=new 类名(); 这种创建方法)而是由spring容器统一管理,自动注入(注入即赋值)

Aop使得系统服务得到了极大的复用,不在由程序员手工将系统服务混在业务逻辑中,而是由spring容器统一织入

spring:容器,装的是java对象,可以让spring创建对象,给属性赋值等

3.Spring的特性

3.1Spring的优点

轻量级、不到1M、解耦合、针对接口编程,方便集成其他的框架
Spring官网地址,点此进入
在官网中我们可以看到spring可以做如下开发:
在这里插入图片描述
找到View all projects进入后可以看到"spring全家桶"如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2下载和学习相关资源

在这里插入图片描述
在这里插入图片描述
全英文的文档,你可以使用翻译软件查看中文版本的

3.3Spring约束

spring使用更强大的xsd约束
在这里插入图片描述

4.Spring框架结构

在这里插入图片描述

5.Ioc(控制反转)的概念

inversion of control:一个理论,指导思想,指导程序员如何使用对象,管理对象,把对象处理交给容器

控制:对象的创建、赋值、生命周期的管理
反转:把权限给了代码之外的容器来管理

正转:由new创建对象,开发人员拥有操作对象的全部权限

通过容器可以使用容器中的对象(容器已经创建对象,组装好对象)

6.依赖注入DI

Ioc的技术实现DI:Dependency Injection,程序只需要提供要使用的对象的名称即可,对象如何创建、查找、获取都由容器内部自己实现

依赖:比如class A 使用class B的属性或方法,叫做class A 依赖class B

DI从技术的角度更加清晰的描述了Ioc所要做的事情

spring使用di实现ioc,通过名称即可拿到对象
spring底层使用的是反射机制来创建,而不是序列化或者new

7.AOP

7.1什么是aop编程思想

把纵向编码发展为横向编码,给某一块代码添加一些新的功能
织入:就是切入,将切面与切入点结合这是个逻辑过程
通知:增强方法
切入点:选定的方法
切面:被通知的对象
连接点:任何类的方法

aop的作用:在不修改代码的情况下可以达到进行增强的效果

7.2什么是纵向编码??什么是横向编码

在JavaSE的学习中,我们常用的代码复用方法是继承,通过继承的方法可以实现业务逻辑,
继承是树状的,如下所示,即为向下发展的编程逻辑
在这里插入图片描述
然而运用了面向切面编程的思想之后
在这里插入图片描述
面向切面是从继承体系结构上逐步横向发展来的

8.第一个Spring案例

8.1项目架构

在这里插入图片描述

8.2编写Users类

package com.ddb.spring;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Users {
   private String name;
   private String address;
   private String memo;
@Override
public String toString() {
	return "Users [name=" + name + ", address=" + address + ", memo=" + memo + "]";
}

   
   
}

8.3编写Spring主配置文件

<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
	
	   <bean id="users" class="com.ddb.spring.Users">
	      <property name="name">
	         <value>sxh</value>
	      </property>
	      <property name="address" value="wuhu"/> 
	      <property name="memo" value="This is my first Spring project"/>
	   </bean>
	</beans>

可以将以上配置文件简化成如下的格式:

<beans>
      <bean id="" class="包名+类名">
            <property name="">
                  <value></value>
            </property>
      </bean>
</beans>

主配置文件的根路径:<beans> </beans>
<bean></bean>是子路径
id:给javabean取个名字
class:这个bean的全路径
<property></property>包裹这个bean的一个属性
name:属性的名字,一一对应
value:属性对应的值

8.4编写properties文件

此文件,不是必须

# rootLogger是所有日志的根日志,修改该日志属性将对所有日志起作用
# 下面的属性配置中,所有日志的输出级别是info,输出源是console
log4j.rootLogger=info,console
# 定义输出源的输入位置是控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
# 定义输出日志的布局采用的类
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# 定义日志输出布局
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

8.5编写测试类

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

public class Test {
   private static ApplicationContext ctx;
   
   public static void print(Object object) {
	   System.out.println(object);
   }
   
   public static void test1() {
	   Users users=new Users();//new 一个对象
	   users.setName("Teacher");
	   users.setAddress("hefei");
	   users.setMemo("This is my first Spring project!!");
	   print(users);
   }
   
   public static void test2() {
	   ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
	   Users users=(Users) ctx.getBean("users");
	   print(users);
	   
   }
   
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         test1();//原来的方法
         test2();
	}

}

关于命名规范:
类名:每个首字母大写
包名:全小写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值