Spring学习1-Spring入门

1、基本介绍
  • Spring是一个轻量级的控制反转和面向切面的容器框架。2002年首次推出雏形,2004年正式诞生。
  • 决企业开发的复杂性,使现有的技术更加容易使用。本身是一个大杂烩,整合了现有的技术框架。
    SSH:Spring +Struct2 +Hibernate
    SSM:Spring+Spring MVC+MyBatis
2、优点
  • 免费的开源容器框架;
  • 非入侵式的、轻量级框架,导入之后不会影响代码原有逻辑配置;
  • 控制反转(IOC)、面向切面编程(AOP);
  • 支持事物的处理、对框架的整合。

总结:Spring是一个轻量级的控制反转和面向切面编程的实现框架。

3、Spring组成(7大模块)

在这里插入图片描述

4、核心思想

4.1 控制反转(IOC)

(1)现状

  • 在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑。

在这里插入图片描述

  • IOC借助于“第三方”实现具有依赖关系的对象之间的解耦。从本质上解决了程序员管理对象创建的问题,降低了对象之间的耦合性,提高代码重复使用率,可以更加专注于业务实现。

(2)IOC本质

  • 控制反转是一种程序设计思想,DI(依赖注入)是实现控制反转的方式之一,借助于“第三方”实现对象之间的松散耦合,就是获得对象的方式反转了(由程序创建移交给客户选择)

(3)IOC实现(xml配置与注解)

  • Spring初始化之时先会读取配置文件,根据配置文件或者元数据创建与组织对象存入容器,程序使用时再从容器中取出对应对象。
    采用XML方式配置Bean时候,Bean的定义和实现是分离的。采用注解可以把二者结合起来,Bean定义的信息可以直接通过注解定义在实现类里面,从而达到零配置。

4.2 面向切面编程(AOP)

  • 在运行时,动态地将代码切入到类的指定方法、指定位置上。
  • AOP 是一种编程思想。效果是,保证开发者不修改源代码的前提下,去为系统中的业务组件添加某种通用功能。
5、使用

(1)导入Jar包

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.15.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.15.RELEASE</version>
</dependency>

spring 需要导入commons-logging进行日志记录 . 利用maven会自动下载对应的依赖项。

(2)编写程序

  • 编写一个Hello实体类
public class Hello {
   private String name;

   public String getName() {
       return name;
  }
   public void setName(String name) {
       this.name = name;
  }

   public void show(){
       System.out.println("Hello,"+ name );
  }
}
  • 编写spring文件 命名为beans.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就是java对象 ,Spring创建和管理-->
   <!--id为对象名,class为类地址,name为属性,value为属性值-->
   <bean id="hello" class="com.kuang.pojo.Hello">
       <property name="name" value="Spring"/>
   </bean>
</beans>

(3)测试

@Test
public void test(){
   //解析beans.xml文件 , 生成管理相应的Bean对象
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   //getBean : 参数即为spring配置文件中bean的id .
   Hello hello = (Hello) context.getBean("hello");
   hello.show();
}

(4)beans.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 id="MysqlImpl" class="com.kuang.dao.impl.UserDaoMySqlImpl"/>
   <bean id="OracleImpl" class="com.kuang.dao.impl.UserDaoOracleImpl"/>

   <bean id="ServiceImpl" class="com.kuang.service.impl.UserServiceImpl">
       <!--注意: 这里的name并不是属性 , 而是set方法后面的那部分 , 首字母小写-->
       <!--引用另外一个bean , 不是用value 而是用 ref-->
       <property name="userDao" ref="OracleImpl"/>
   </bean>
</beans>
6、总结
  • 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的;

  • 反转 : 程序本身不创建对象 , 而变成被动的接收对象 ;

  • 依赖注入 : 就是利用set方法来进行注入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值