首页 > 其他分享 >Spring-day02 容器的概念,容器中的对象,IOP入门

Spring-day02 容器的概念,容器中的对象,IOP入门

时间:2022-10-31 00:33:16浏览次数:75  
标签:容器 框架 对象 spring 创建对象 IOP Spring

spring

Spring 框架是什么

Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发 的复杂性而创建的。Spring 的核心是控制反转(IoC)和面向切面编程(AOP)。Spring 是可 以在 Java SE/EE 中使用的轻量级开源框架。

	Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。就是让对象和对象(模 块和模块)之间关系不是使用代码关联,而是通过配置来说明。即在 Spring 中说明对象(模 块)的关系。 

	Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互 调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring 容器统一管理,自动“注入”,注入即赋值。 而 AOP 使得系统级服务得到了最大复用,且 不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成 “织入”。

官网:https://spring.io

Spring 优点?

Spring 是一个框架,是一个半成品的软件。有 20 个模块组成。它是一个容器管理对象, 容器是装东西的,Spring 容器不装文本,数字。装的是对象。Spring 是存储对象的容器。

(1) 轻量 Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring 核心功能的所需 的 jar 总共在 3M 左右。 Spring 框架运行占用的资源少,运行效率高。不依赖其他 jar

(2) 针对接口编程,解耦合 Spring 提供了 Ioc 控制反转,由容器管理对象,对象的依赖关系。原来在程序代码中的 对象创建方式,现在由容器完成。对象之间的依赖解耦合。 Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发 的复杂性而创建的。Spring 的核心是控制反转(IoC)和面向切面编程(AOP)。Spring 是可 以在 Java SE/EE 中使用的轻量级开源框架。 北京动力节点 www.bcht.com 讲师王鹤 3 (

3) AOP 编程的支持 通过 Spring 提供的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现 的功能可以通过 AOP 轻松应付 在 Spring 中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声明式方式灵活地 进行事务的管理,提高开发效率和质量。

(4) 方便集成各种优秀框架 Spring 不排斥各种优秀的开源框架,相反 Spring 可以降低各种框架的使用难度,Spring 提供了对各种优秀框架(如 Struts,Hibernate、MyBatis)等的直接支持。简化框架的使用。 Spring 像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把 这个插头放入插线板。不需要可以轻易的移除。

Spring 体系结构

Spring 由 20 多个模块组成,它们可以分为数据访问/集成(Data Access/Integration)、 Web、面向切面编程(AOP, Aspects)、提供JVM的代理(Instrumentation)、消息发送(Messaging)、 核心容器(Core Container)和测试(Test)。

spring的第一个核心功能 ioc

1. IoC (Inversion of Control) : 控制反转, 是一个理论,概念,思想。

描述的:把对象的创建,赋值,管理工作都交给代码之外的容器实现, 也就是对象的创建是有其它外部资源完成。

控制: 创建对象,对象的属性赋值,对象之间的关系管理。
反转: 把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。 由容器代替开发人员管理对象。创建对象,
给属性赋值。

正转:由开发人员在代码中,使用new 构造方法创建对象, 开发人员主动管理对象。

	        public static void main(String args[]){
      Student student = new Student(); // 在代码中, 创建对象。--正转。

		 }

2.为什么要使用 ioc : 目的就是减少对代码的改动, 也能实现不同的功能。 实现解耦合。

3. 什么是容器

容器:是一个服务器软件, 一个框架(spring)

4. java中创建对象有哪些方式:

  1. 构造方法 , new Student()
  2. 反射
  3. 序列化
  4. 克隆
  5. ioc :容器创建对象
  6. 动态代理

5. ioc的体现:

servlet

1: 创建类继承HttpServelt 

2:  在web.xml 注册servlet , 使用<servlet-name> myservlet </servlet-name>
				                                 <servelt-class>com.bjpwernode.controller.MyServlet1</servlet-class>

3. 没有创建 Servlet对象, 没有 MyServlet myservlet = new MyServlet()

4. Servlet 是Tomcat服务器它能你创建的。 Tomcat也称为容器Tomcat作为容器:里面存放的有Servlet对象, Listener , Filter对象

6. IoC的技术实现

DI 是ioc的技术实现,
DI(Dependency Injection) :依赖注入, 只需要在程序中提供要使用的对象名称就可以, 至于对象如何在容器中创建, 赋值,查找都由容器内部实现。

spring是使用的di实现了ioc的功能, spring底层创建对象,使用的是反射机制。

spring是一个容器,管理对象,给属性赋值, 底层是反射创建对象。

7 spring 模块需要导入的类

spring-conetxt 和 spring-webmvc是spring中的两个模块
spring-context:是ioc功能的,创建对象的。
spring-webmvc做web开发使用的, 是servlet的升级。 
spring-webmvc中也会用到spring-context中创建对象的功能的。

依赖

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
插件
<build>
<plugins>
 <plugin>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>3.1</version>
 <configuration>
 <source>1.8</source>
 <target>1.8</target>
 </configuration>
 </plugin>
</plugins>
</build>

8. 代码如下

项目一结构

Service和其实现类

bean中内容:

测试代码如下:

package com.bcht;

import com.bcht.service.SomeService;
import com.bcht.service.impl.SomeServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.Date;

public class MyTest {

    @Test
    public void test01(){
        SomeService service  = new SomeServiceImpl();
        service.doSome();
   }

    /**
     * spring默认创建对象的时间:在创建spring的容器时,会创建配置文件中的所有的对象。
     * spring创建对象:默认调用的是无参数构造方法
     */
   @Test
    public void test02(){
        //使用spring容器创建的对象
       //1.指定spring配置文件的名称
       String config="beans.xml";
       //2.创建表示spring容器的对象, ApplicationContext
       // ApplicationContext就是表示Spring容器,通过容器获取对象了
       // ClassPathXmlApplicationContext:表示从类路径中加载spring的配置文件
       ApplicationContext ac = new ClassPathXmlApplicationContext(config);

       //从容器中获取某个对象, 你要调用对象的方法
       //getBean("配置文件中的bean的id值")
       SomeService service = (SomeService) ac.getBean("someService");

       //使用spring创建好的对象
       service.doSome();

   }

    /**
     * 获取spring容器中 java 对象的信息
     */
    @Test
    public void test03(){
        String config="beans.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(config);
        //使用spring提供的方法, 获取容器中定义的对象的数量
        int nums  = ac.getBeanDefinitionCount();
        System.out.println("容器中定义的对象数量:"+nums);
        //容器中每个定义的对象的名称
        String names [] = ac.getBeanDefinitionNames();
        for(String name:names){
            System.out.println(name);
        }
    }

    //获取一个非自定义的类对象
    @Test
    public void test04(){
        String config="beans.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(config);
        //使用getBean();
        Date my = (Date) ac.getBean("mydate");
        System.out.println("Date:"+my);
    }
}

标签:容器,框架,对象,spring,创建对象,IOP,Spring
From: https://www.cnblogs.com/atao-BigData/p/16842870.html

相关文章

  • Spring-day01 spring全家桶,如何学习框架,单元测试
    Spring学习-概述1.spring全家桶:spring,springmvc,springboot,springcloudspring:出现是在2002左右,解决企业开发的难度。减轻对项目模块之间的管理,类和类之间的......
  • 【springBoot】项目启动访问@RequestMapping路径,页面报404,控制台无报错
    【爱迪的懂】springboot项目,启动后访问@RequestMapping路径,页面报404,控制台无报错检查自己代码后,感觉完全没有问题,可以考虑下面的原因原因:springBoot项目的启动器里的@......
  • SpringBoot2 学习记录
    SpringBoot2入门要求Java8&兼容java14Maven3.3+idea2019.1.2配置maven默认jdk版本<profile><id>jdk-1.8</id><activation>......
  • Docker使用中相关清理命令:删除容器与镜像
    在构建Docker镜像的过程中,会产生一些无用的窗口与镜像;在构建过程中也可能会遇到失败,需要进行清理。删除容器与镜像,一般需要先停止在运行中的容器。杀死所有正在运行的容......
  • 42-42-Spring Cloud Alibaba之Sentinel设计原_ev
        热点数据处理:写日志一分钟批量提交       ......
  • Spring AOP的三种方法
    方法一  使用API接口实现(每个方法都需要配置aop约束) Log.javaimportorg.springframework.aop.MethodBeforeAdvice;importjava.lang.reflect.Method;publicclas......
  • Spring Boot Full @Configuration vs ‘lite‘ @Bean mode?
    When@Beanmethodsaredeclaredwithinclassesthatarenotannotatedwith@Configurationtheyarereferredtoasbeingprocessedina‘lite’mode.Beanmetho......
  • Spring Framework之IOC容器的扩展点(TODO)
    坑,待填参考:​​​扩展Spring的几种方式​​​Spring中Bean的生命周期及其扩展点[Spring]Spring容器扩展点​​spring之扩展点​​SpringContainer的扩展点​​Spring架构......
  • 深入 Spring 系列之静态资源处理
    前一段时间,WebIDE开源的过程中,无意间接触到webjars,觉得比较有趣,于是研究并整理了一下。webjars是将前端的库(比如jQuery)打包成Jar文件,然后使用基于JVM的包管理器(比如......
  • Spring Boot事务配置管理
    事务相关场景:我们在开发企业应用时,由于数据操作在顺序执行的过程中,线上可能有各种无法预知的问题,任何一步操作都有可能发生异常,异常则会导致后续的操作无法完成。此时由于......