spring介绍(代码片段)

小布丁value 小布丁value     2022-12-20     740

关键词:

介绍


Spring中AOP、IOC等点

IOC介绍

Spring核心思想之一:IOC(Inversion Of Control)控制反转
对象创建交给外部容器完成,这个过程就是控制反转

在之前java使用中,需要使用那个类的对象,在调用方直接New 对象出来,然后完成调用


class User 
    //User类中用到UserInfo,需要在那个类中创建出对象实例
UserInfo uderinfo =   new UserInfo();
     getUserInfo()
       //todo
         
      
    
    updateUserInfo
      //todo
    


class UserInfo
   String name;
   Intterger ID;
   String address;
    
    //getter和setter方法
    




对象创建交给外部容器完成,这个过程就是控制反转
对于类的创建及销毁等生命周期内的操作都交给容器管理,对象创建也是在容器中,如果调用方需要使用某一个对象,由IOC容器将对象的使用权交给了调用方,调用方只需要关注使用即可,对于对象的回收、创建都不在关注
解耦合!!!
Spring容器管理对象
1、添加依赖
通过maven来管理依赖jar包

Spring容器管理对象

1、添加依赖

通过maven来管理依赖jar包

        <!--Spring 基本核心jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--log4j日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--注解相关jar包-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

2、配置spring配置文件(applicationCintext.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-3.0.xsd"> 
    
</beans>

3、创建实体类

public class StudentGX21 
    private String id;
    private String name;

    public String getId() 
        return id;
    

    public void setId(String id) 
        this.id = id;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

4、spring来管理容器

在之前 new StudentGY21()创建对象
现在有了IOC容器,将该类讲给IOC容器帮助管理

    <!--通过bean节点来创建对象,id属性标识对象,class属性是对应类的全路径-->
    <bean id="student"  class="com.tulun.bean.StudentGX21"/>

5、通过容器获取对象

        //获取IOC容器对象
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        StudentGX21 student = (StudentGX21)applicationContext.getBean("student");
        System.out.println(student);


先通过读取xml配置文件
对象xml进行解析
通过反射创建bean对象

Spring中DI介绍

DI-Dependency Injection:即依赖注入,将bean的依赖关系由容器来运行决定的,即容器动态的将某个依赖关系注入到组件中

对于依赖注入的使用
以StudentGX21为例,对其属性id和name完成注入

public class StudentGX21 
    private String id;
    private String name;

    public String getId() 
        return id;
    

    public void setId(String id) 
        this.id = id;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

依赖注入如下:

    <!--通过set方法完成注入-->
    <bean id="student"  class="com.tulun.bean.StudentGX21">
        <!--name属性注入-->
        <property name="name" value="工业实训"/>
        <property name="id" value="计算机学院"/>
    </bean>

Spring中bean实例和依赖注入基于注解形式使用

xml配置文件如下:

<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.xsd    
              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

</beans> 

开启注解扫描

    <!--开启注解扫描,指定包路径或者类名:会扫描类、方法、属性上是否有注解-->
    <context:component-scan base-package="com.tulun"/>

在需要交给容器管理的类上添加注解

@Component(value = "student")
//<bean id="student"  class="com.tulun.bean.StudentGX21">
public class StudentGX21 
    @Value("1")
    private String id;
    @Value("工业大学")
    private String name;
    @ Resource
    private   UserGX12 user;

在类上添加的注解是进行bean实例化的注解:
@Component
@Repository
@Controller
@Service
可以互相替换使用

依赖注入相关注解:
@Value:对于普通类型的属性
@ Resource :注入对象类型
@Autowired:注入对象类型

spring和mybatis的整合

整合思路
将SQLSessionFactory等创建交给Spring管理,
将mybatis的数据源、mapper的映射关系都可以交给spring管理
整合步骤

1、引入依赖

除了mybatis、spring依赖外,特定的依赖是mybatis提供专门和spring整合的依赖jar包

       <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

所有的依赖

        <!--Spring 基本核心jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--log4j日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--注解相关jar包-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>

        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

2、创建mybatis相关依赖信息

pojo\\mapper.xml\\mapper.java\\全局配置文件
全局配置文件(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--数据源及映射都可以不配置,放在spring配置文件中-->
</configuration>

pojo类

public class StudentGX21 
    private Integer SID;
    private String Sname;
    private String Ssex;
    private Integer Sage;
    //省略getter和setter方法

mapper.java接口文件

public interface StudentMapperGX21 
    public List<StudentGX21> getAllStudent();

mapper.xml配置文件

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

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:命令空间 为对应的接口文件的全路径-->
<mapper namespace="com.tulun.mapper.StudentMapperGX21">

       <select id="getAllStudent" resultType="com.tulun.bean.StudentGX21">
        select * from student
    </select>
</mapper>

3、spring的配置文件(applicationContext1.xml)

<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.xsd
              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描,指定包路径或者类名:会扫描类、方法、属性上是否有注解-->
    <context:component-scan base-package="com.tulun"/>

    <!--配置数据源:c3p0数据源-->
    <bean id="datasource" class="com.mchange.v2.c3p0.DriverManagerDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!--会话工厂的配置-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--加载mybatis的配置文件-->
        <property name="configLocation" value="mybatis-config.xml"/>
        <!--配置数据源-->
        <property name="dataSource" ref="datasource"/>
        <!--配置映射文件-->
        <property name="mapperLocations" value="mapper/*.xml"/>
    </bean>


    <!--动态代理对象-->
    <bean class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!--接口-->
        <property name="mapperInterface" value="com.tulun.mapper.StudentMapperGX21"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
</beans>

4、service层(StudentServce.java

//通过注解形式将该类交给spring管理
@Service(value = "studentService")
public class StudentServiceGX21 
//    注入依赖:注入mapper层依赖
    @Autowired
    private StudentMapperGX21 studentMapperGX21;

    public void allStudents() 
        List <StudentGX21> studentGX21s = studentMapperGX21.getAllStudent();
        Iterator <StudentGX21> iterator = studentGX21s.iterator();
        while (iterator.hasNext()) 
            System.out.println(iterator.next());
        
    

5

spring配置使用介绍(代码片段)

Spring配置使用介绍文章目录Spring配置使用介绍一、集合类型注入1、注解形式2、xml形式二、alias使用1、xml形式2、注解形式三、depends-on1、xml形式2、注解形式四、继承关系五、scope1、xml形式2、注解形式六、replaced-method七、配置文... 查看详情

spring中的advice类型介绍(代码片段)

Spring中的Advice类型介绍翻译原文链接IntroductiontoAdviceTypesinSpring1.概述在本文中,我们将讨论可以在Spring中创建的不同类型的AOP通知。Inthisarticle,we’lldiscussdifferenttypesofAOPadvicethatcanbecreatedinSpring.通知是切面在特定连接点采取的... 查看详情

spring(34)——springretry介绍(代码片段)

SpringRetry介绍Springretry是Spring提供的一种重试机制的解决方案。它内部抽象了一个RetryOperations接口,其定义如下。publicinterfaceRetryOperations<T,EextendsThrowable>Texecute(RetryCallback<T,E>retryCallback)throwsE;< 查看详情

spring中的advice类型介绍(代码片段)

Spring中的Advice类型介绍翻译原文链接IntroductiontoAdviceTypesinSpring1.概述在本文中,我们将讨论可以在Spring中创建的不同类型的AOP通知。通知是切面在特定连接点采取的行动。不同类型的通知包括环绕、前置和后置通知。切面的主要... 查看详情

day02-spring基本介绍02(代码片段)

Spring基本介绍025.简单模拟Spring基于XML配置的程序5.1需求说明自己写一个简单的Spring容器,通过读取beans.xml,获取第一个Javabean:Monster的对象,给该对象属性赋值,放入到容器中,并输出该对象信息也就是说,不使用spring原生框... 查看详情

spring初识spring--spring介绍(代码片段)

Spring入门之初识Spring1.概述1.1优点1.2组成2.IOC基础2.1IOC理论推导2.2IOC本质1.概述Spring轻量级的开源的JavaEE框架2002年,Spring框架的雏形:Interface21Spring框架即以Interface21框架为基础,经过重新设计,并不断丰富其内涵&#... 查看详情

spring中的切点表达式介绍(代码片段)

Spring中的切点表达式介绍翻译原文链接IntroductiontoPointcutExpressionsinSpring1.概述在本教程中,我们将讨论SpringAOP切点表达式语言。InthistutorialwewilldiscusstheSpringAOPpointcutexpressionlanguage.我们将首先介绍一些在面向切面编程中使用的术... 查看详情

spring读源码系列01---spring核心类及关联性介绍(代码片段)

Spring读源码系列01---Spring核心类及关联性介绍Spring核心类引子DefaultListableBeanFactoryDefaultListableBeanFactory的继承体系XmlBeanDefinitionReader容器的基础XmlBeanFactory配置文件--->Resource进入源码追踪XmlBeanFactory的构造函数loadBeanDefinit 查看详情

springspring入门介绍(代码片段)

文章目录1.Spring介绍1.1Spring是什么?1.2IoC是什么?1.3DI是什么?1.4Spring的核心功能1.5Spring的应用上下文2.Spring项目的创建和使用2.1创建Maven项目2.2存储Bean对象2.3获取并使用Bean对象3.Spring更简单的读取和存储对象方式3.1存... 查看详情

一spring介绍以及版本历史演进(代码片段)

背景Spring的第一个版本于2002年10月发布,由一个带有易于配置和使用的控制反转(IoC)容器的小型内核组成。多年来,Spring已经成为JavaEnterpriseEdition(Java企业版JEE)的主要替代品,并且发展成一个由许... 查看详情

spring源码分析容器的基本实现——核心类介绍(代码片段)

bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义。publicclassMyTestBeanprivateStringtestStr="testStr";publicStringgetTestStr()returntestStr;publicvoids... 查看详情

springboot脚手架项目001__项目介绍技术介绍(代码片段)

SpringBoot、脚手架项目001——Spring的基础文章目录SpringBoot、脚手架项目001——Spring的基础SpringBoot是什么?作用——我们可以把这个项目作为脚手架什么是面向对象编程我们思考Spring框架去解决了一个什么问题呢后话spring全家... 查看详情

spring项目xml文件使用常见介绍(代码片段)

1项目pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 查看详情

spring项目xml文件使用常见介绍(代码片段)

1项目pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 查看详情

spring基础:代理模式介绍(代码片段)

目录代理模式介绍一、静态代理二、动态代理1、Proxy动态代理2、Cglib动态代理三、总结代理模式介绍代理模式是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计... 查看详情

ipv6-基础介绍(代码片段)

?本系列文章:读源码,我们可以从第一行读起你知道Spring是怎么解析配置类的吗?配置类为什么要添加@Configuration注解?br/>本系列文章:读源码,我们可以从第一行读起你知道Spring是怎么解析配置类的吗?配置类为什么要添加@C... 查看详情

spring学习-ioc-xml关键配置介绍(代码片段)

介绍spring的xml配置项较多,这里作一个综述配置示例如下:<?xmlversion="1.0"encoding="UTF-8"?><!--xml的版本和编码方式,必须放在开始--><!--参考:https://www.cnblogs.com/zhao1949/ 查看详情

spring的介绍引用spring的依赖包resources下xml的配置简单示例(代码片段)

文章目录前言一、spring简介二、spring特点三、IOC概念四、DI概念五、使用spring实现一个简单程序(在jdk,还有maven安装好的前提下)1.引用spring的依赖包2.引用springcontext的依赖包3.编写dog类4.在resources文件夹中创建spring-2... 查看详情