Spring

Spring成长之路【一】:创建Spring项目 - 知乎 (zhihu.com)

IDEA2021新建第一个Spring项目(使用两种方法)_idea创建spring项目-CSDN博客

〇)Spring项目的搭建

        1新建一个Maven项目

        2在pom.xml中添加依赖

引入spring-context依赖Maven会自动引入springbasic的其他依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

         3新建Spring的配置文件(在src根目录下或者放在resources根目录下

<?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="helloWorld" class="HelloWorld" scope="prototype">
        <property name="name" value="Hello World!" />
    </bean>
</beans>

一)Spring 简介

        Spring是一个容器框架()

        IOC:

                控制反转,由spring框架来创建对象;使用Bean对象时DI依赖注入,DI一定是在IOC的基础上完成。

                IOC利用java的反射机制:

                        1.获取class的方式 

                                 类名.class  

                                对象.getClass(),

                                Class.forName("全限定类名")

                IOC的原理:

                        1.读取spring的配置文件,id=stu ,class="com.zz.bean.Student"

                        2.读取Student的Class, Class.forName("com.zz.bean.Student")

                        3.使用默认无参构造器实例化对象Student newInstance()

                        4.容器 <k,v> <"stu",Student>

        AOP:

                面向切面编程,在不修改源代码情况下扩展系统功能,使用动态代理(jdk和cglib)

二) SpringBean 实例化方式:

     1  默认使用无参的构造器实例化Bean对象 

     2  使用静态化工厂 获取Student类对象

     3  使用实例化工厂,获取工厂对象后获取Student类对象

                静态化工厂直接调用类方法创建学生类对象

                实例化工厂需要先创建工厂对象,工厂对象调用方法返回值生成学生类对象

<bean id="stu" class="com.xja.bean.Studnet"> </bean>

<bean id="stu2" class="com.xja.bean.StudentFactory" factory-method="getStudent"></bean>

<bean id="stuFactory" class="com.xja.bean.StudentFactoryIsNotStatic"></bean>

<bean id="stu3" factory-bean="stuFactory" factory-method="getStudent"> </bean>

 


public class Student{

    public String stuName = "zz"

  //使用IOC默认使用无参构造器创建对象,没有无参构造器会报错      
 //   public Student(String stuName){
 //       this.stuName = stuName;
 //   }

   public Student(){
        System.out.println("student被创建。。。")
    }

    public void init(){
        System.out.println("init被创建。。。")
    }
    public void destory(){
        System.out.println("destory被创建。。。")
    }

}

   

public class StudentFactory{
    public static Student getStudent(){
        return new Student();
    }
}
public class StudentFactory2{

    public Student getStudent(){
        return new Student();
    }
}

   

三)SpringBean对象查找的方式

//加载spring的配置文件
ApplicationContext context =  new ClassPathXmlApplicationContext("applicationContext.xml");

Student stu1 =  (Student)context.getBean("stu1")

Student stu2 = (Student)context.getBean("stu2")

Student stu3 = (Student)context.getBean("stu3")

Student bean = context.getBean("stu",Student.class);

四)SpringBean对象的作用域scope

          singleton:默认单例模式 (多次创建的对象完全一样)

           prototype:多例,每一次获取返回的都是最新的bean对象

            在web应用程序中scope:request,session,globleSession

<bean id="stu" class="com.xja.bean.Student" scope="singleton"></bean>

五)SpringBean对象生命周期

                web应用自动调用:对象的创建,初始化init-method,使用,销毁destory-method

                在web应用程序中destory方法才可以被显式调用

               在测试类中只能手动调用destory方法。

        

相关推荐

  1. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      58 阅读
  2. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      45 阅读
  3. <span style='color:red;'>spring</span>

    spring

    2024-06-10 01:56:01      41 阅读
  4. Spring

    2024-06-10 01:56:01       31 阅读
  5. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      29 阅读
  6. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      24 阅读
  7. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      28 阅读
  8. Spring

    2024-06-10 01:56:01       30 阅读
  9. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      35 阅读
  10. <span style='color:red;'>Spring</span>

    Spring

    2024-06-10 01:56:01      26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 01:56:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 01:56:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 01:56:01       87 阅读
  4. Python语言-面向对象

    2024-06-10 01:56:01       96 阅读

热门阅读

  1. 作业40 自定义函数

    2024-06-10 01:56:01       29 阅读
  2. win10文件夹.git或者文件被隐藏的开启姿势

    2024-06-10 01:56:01       28 阅读
  3. Ansible——get_url模块

    2024-06-10 01:56:01       31 阅读
  4. bash、zsh、fish三种流行Unix shell的区别

    2024-06-10 01:56:01       31 阅读
  5. nodejs 第三方库 exiftool-vendored

    2024-06-10 01:56:01       31 阅读
  6. C++中实现一个泄漏检测工具

    2024-06-10 01:56:01       32 阅读
  7. ubuntu远程控制软件todesk安装及网络连接问题解决

    2024-06-10 01:56:01       30 阅读
  8. C++,观察者模式,模拟Qt的信号和槽机制

    2024-06-10 01:56:01       36 阅读
  9. 在ADG只读备库使用数据泵导出数据

    2024-06-10 01:56:01       33 阅读
  10. Android基础-AIDL的实现

    2024-06-10 01:56:01       32 阅读