• Spring入门学习(一)


    Spring

    Spring的优点

    • Spring是一个开源的免费的框架(即容器)!
    • Spring是一个轻量级的、非入侵式的框架!
    • 控制反转(IOC),面向切面编程(AOP)!
    • 支持事务的处理,对框架整合的支持!

    结论:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!

    官网:https://spring.io/

    根据下面的步骤进入帮助文档

    页面网址:https://docs.spring.io/spring/docs/5.2.3.RELEASE/javadoc-api/

    IOC本质

    控制反转IOC(Inversion of Controller),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI知识IOC的另一种说法,没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖关系完全硬编码在程序中,对象的创建有程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓的控制反转就是:获得依赖对象的方式反转了。

    控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式吗。在Spring中实现控制反转的是IOC容器,其实现方式是依赖注入(Dependency Injection,DI)。

    编写第一个HelloSpring程序

    1、导入Spring相关jar包

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    

    导入spring-webmvc后idea会自动导入其他的相关的依赖

    也可以手动导入!

    2、编写一个Hello实体类

    package com.star.pojo;
    
    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);
        }
    }
    

    3、编写配置文件(参考文档)

    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--bean就是java对象 , 由Spring创建和管理
            id:类对应对象的名字
            class:对应的类(写包名)
            property:字段标签
                        name:属性名
                        value:属性对应的值
        -->
        <bean id="hello" class="com.star.pojo.Hello">
            <property name="name" value="Spring"/>
        </bean>
    
    </beans>
    

    4、接下里就可以进行测试了

    import com.star.pojo.Hello;
    
    import org.junit.Test;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class MyTest {
    
        @Test
        public void helloTest(){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//对应的配置文件
            Hello hello = (Hello) context.getBean("hello");//调用getBean方法获得该类对象,参数就是配置文件里面的设置的类的id
            hello.show();//调用方法完成测试
        }
    }
    

    测试结果:

    可以看到这相当于下面的代码

        Hello hello = new Hello();
        hello.setName("Spring");
        hello.show(name);
    

    Hello对象是由Spring创建,对象的属性有Spring容器设置,这个过程就叫控制反转

    控制:传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的;

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

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

    IOC是一种由主动的编程变成被动的接收;

    使用Spring后,我们彻底不用在程序中取改动了,要实现不同的操作,只需要在配置文件中进行修改,所谓的IOC,其实就是:对象由Spring来创建,管理,装配!

    IOC创建对象的方式

    1、使用无参构造创建对象

    编写一个实体类User

    package com.star.pojo;
    
    public class User {
    
        private String name;
    
        public void User(){
            System.out.println("对象创建了!")
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void show(){
            System.out.println("name="+name);
        }
    }
    

    配置文件

        <bean id="user" class="com.star.pojo.User">
            <property name="name" value="star"/>
        </bean>
    

    测试

        @Test
        public void userTest(){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println("============================");
            User user = (User) context.getBean("user");
            user.show();
        }
    

    测试结果:

    2、使用有参构造创建对象

    编写实体类

    package com.star.pojo;
    
    public class User {
    
        private String name;
    
        public User(String name) {
            this.name = name;
        }
    
        public void show() {
            System.out.println("name="+name);
        }
    }
    

    配置文件有三种写法(使用标签):

    1、下标赋值

    <bean id="user" class="com.kuang.pojo.User">
        <constructor-arg index="0" value="张三"/>
    </bean>
    

    2、类型赋值

    <bean id="user" class="com.kuang.pojo.User">
        <constructor-arg type="java.lang.String" value="李四"/>
    </bean>
    

    3、参数名赋值

    <bean id="user" class="com.kuang.pojo.User">
        <constructor-arg name="name" value="王五"/>
    </bean>
    

    测试代码不变

    测试结果:

    结论:在配置文件加载的时候,容器中管理的对象就已经初始化了!

  • 相关阅读:
    Java的格式化输出
    常用排序算法的Python实现
    零基础自学用Python 3开发网络爬虫(一)
    Python常见数据结构整理
    百度天气预报API的使用(java版本)
    大总结
    CCS学习(三)
    CSS学习(页外引用还不懂)
    CSS自定义动画
    ssm日期格式转换
  • 原文地址:https://www.cnblogs.com/lmx-181028/p/12354641.html
Copyright © 2020-2023  润新知