【狂神】Spring5笔记(1-9)

这篇具有很好参考价值的文章主要介绍了【狂神】Spring5笔记(1-9)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

首页:

1.Spring

1.1 简介

1.2 优点

2.IOC理论推导

3.IOC本质

4.HelloSpring

ERROR

5.IOC创建对象方式

5.1、无参构造 这个是默认的

5.2、有参构造

6.Spring配置说明

6.1、别名

6.2、Bean的配置

6.3、import

7.DL依赖注入环境

7.1 构造器注入

7.2 Set方式注入

7.3 案例(代码)

7.3.1.Student类

 7.3.2 Address类

 7.3.3 beans.xml

 7.3.4 Mytest4类


首页:

        我是跟着狂神老师的视频内容来整理的笔记,不得不说,真的收获颇丰,希望这篇笔记能够帮到你。                                         

..... (¯`v´¯)♥  
.......•.¸.•´   
....¸.•´        
... (           
 ☻/              
/▌♥♥            
/ \ ♥♥          
                

1.Spring

1.1 简介

由Rod Johnson创建,雏形是interface21框架。理念是:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!

  • SSH: Struct2+Spring+Hibernate
  • SSM:SpringMVC+Spring+Mybatis
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.0.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.11</version>
</dependency>

1.2 优点

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

2.IOC理论推导

1.UserDao接口

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

2.UserDaolmpl实现类

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

3.UserService业务接口

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

4.UserServicelmpl业务实现类

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

上面的四个类是我们写项目时的传统的写法。主要就是在实现类中实现功能,最后在业务实现类中最终实现。

2023年12月27日补充,一直不理解为什么要分成这四层。然后今天了解了一下。首先,不要只看图片中所给出的简单的例子。所以UserDao这类借口主要是进行一些与数据库进行交互(增删查改),然后在Userlmpl中进行实现,这样呢就将其进行分隔,弱化了联系,降低了耦合。然后UserService这个接口则主要是定义了一些业务逻辑,包括保存用户、获取用户。但是这些业务逻辑的实现通常会依赖于数据访问层,也就是UserDao。后面的你懂了吧,再见!

通过在Servicelmpl中创建一个新的的UserDao对象,是可以实现方法的调用的,但是当后面所调用的类变得越来越多以后,这种方法就不太适合了。比如说,多了很多类似于UserDaolmpl的实现类,但是想要调用他们的话,就必须在其对应的Service中进行更改,太过于麻烦,耦合性太强

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

解决方法:

public class UserServicelmpl implements UserService{
    private UserDao userDao;
    //利用set进行动态实现值的注入
    public void setUserDao(UserDao userDao){
        this.userDao=userDao;
    }
    public void getUser() {
        userDao.getUser();
    }
}

实现类:

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

3.IOC本质

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

简言之,就是把控制权交给了用户而不是程序员,我们可以通过所选择的来呈现不同的页面或者说是表现方式。用户的选择变多了。

4.HelloSpring

这是一个视频里的小案例,旨在加深对bean的理解。beans.xml的正规名叫做applicationContext.xml,到后面可以用Import进行导入。

代码:

//1.Hello
package org.example;
public class Hello {
    private String str;
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    @Override
    public String toString() {
        return "Hello{"+
                "str="+str+'\''+'}';
    }
}
//2.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">
    <!--  这里的name的值就是类中变量名  -->
    <bean id="hello" class="org.example.Hello">
        <property name="str" value="spring"></property>
    </bean>
</beans>

//3.实现测试类MyTest
import org.example.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        //获取Spring的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Hello hello = (Hello) context.getBean("hello"); //这里的hello就是创建对象的变量名
        System.out.println(hello.toString());
    }
}

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

idea中自动生成返回对象的快捷键

ctr+alt+v

ERROR

1.

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

原因:JDK版本过低造成,要大于1.8,我用的2.0

5.IOC创建对象方式

5.1、无参构造 这个是默认的

<bean id="user" class="org.example.pojo.User"> <property name="name" value="张总"></property> </bean>

5.2、有参构造

  • 通过下标获得
<bean id="user" class="org.example.pojo.User"> <constructor-arg index="0" value="王总"/> </bean>
  • 通过变量的类型获得,但不建议用,因为当变量名有很多时便不适用了
<bean id="user" class="org.example.pojo.User"> <constructor-arg type="java.lang.String" value="赵总"/> </bean>
  • 通过变量名来获得
<bean id="user" class="org.example.pojo.User"> <constructor-arg name="name" value="李总"/> </bean>

6.Spring配置说明

6.1、别名

起别名,并不是覆盖原有的变量名

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

6.2、Bean的配置

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

6.3、import

【狂神】Spring5笔记(1-9),Spring,笔记,前端,java,spring,狂神

7.DL依赖注入环境

7.1 构造器注入

前面已经说过了。

7.2 Set方式注入

  • 依赖注入:Set注入!

               1.依赖:bean对象的创建依赖于容器spring

               2.注入:bean对象中的所有属性,由容器来注入

7.3 案例(代码)

一个比较全的案例,包括了String,类,数组,list集合,Map,Set,Null,Properties。

代码如下:

7.3.1.Student类

//1.Student
package org.example;

import java.util.*;

public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbys;
    private Map<String,String> card;
    private Set<String> games;
    private String wife; //空指针
    private Properties info; //不是很理解这个的意思

    public String getName() {
        return name;
    }

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

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String[] getBooks() {
        return books;
    }

    public void setBooks(String[] books) {
        this.books = books;
    }

    public List<String> getHobbys() {
        return hobbys;
    }

    public void setHobbys(List<String> hobbys) {
        this.hobbys = hobbys;
    }

    public Map<String, String> getCard() {
        return card;
    }

    public void setCard(Map<String, String> card) {
        this.card = card;
    }

    public Set<String> getGames() {
        return games;
    }

    public void setGames(Set<String> games) {
        this.games = games;
    }

    public String getWife() {
        return wife;
    }

    public void setWife(String wife) {
        this.wife = wife;
    }

    public Properties getInfo() {
        return info;
    }

    public void setInfo(Properties info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "Student{"+
                "name="+name+'\''+
                ",address="+address.toString()+
                ",books="+ Arrays.toString(books)+
                ",hobbys="+hobbys+
                ",card="+card+
                ",games="+games+
                ",wife="+wife+'\''+
                ",info="+info+
                '}';
    }
}

 7.3.2 Address类

//2.Address类
package org.example;

public class Address {
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return address;
    }
}

 7.3.3 beans.xml

//3.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" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

    <bean id="address" class="org.example.Address">
        <property name="address">
            <value>西安</value>
        </property>
    </bean>

    <bean id="student" class="org.example.Student">
        <property name="name" value="秦三"/>
        <property name="address" ref="address"/>
        <property name="books">
            <array>
                <value>语文</value>
                <value>数学</value>
                <value>英语</value>
                <value>化学</value>
            </array>
        </property>
        <property name="hobbys">
            <list>
                <value>篮球</value>
                <value>足球</value>
                <value>台球</value>
            </list>
        </property>
        <property name="card">
            <map>
                <entry key="身份证" value="1111111111111"/>
                <entry key="银行卡" value="2222222222222"/>
            </map>
        </property>
        <property name="games">
            <set>
                <value>LOL</value>
                <value>COC</value>
            </set>
        </property>
        <property name="wife">
            <null/>
        </property>
        <property name="info">
            <props>
                <prop key="学号">12345</prop>
                <prop key="性别">男</prop>
                <prop key="姓名">张三</prop>
            </props>
        </property>
    </bean>
    <!-- more bean definitions go here -->

</beans>

 7.3.4 Mytest4类

//4.MyTest测试类
import org.example.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest4 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.toString());
    }
}

最后,祝大家身体健康,学习快乐,天天向上!文章来源地址https://www.toymoban.com/news/detail-688188.html

到了这里,关于【狂神】Spring5笔记(1-9)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring5学习笔记--详细一文通

    本文主要知识 1、Spring 框架概述 (1)轻量级开源 JavaEE 框架,为了解决企业复杂性,两个核心组成:IOC 和 AOP (2)Spring5.2.6 版本 2、IOC 容器 (1)IOC 底层原理(工厂、反射等) (2)IOC 接口(BeanFactory) (3)IOC 操作 Bean 管理(基于 xml) (4)IOC 操作 Bean 管理(基于注解)

    2024年02月15日
    浏览(43)
  • Spring5学习随笔-Spring5的第一个程序(环境搭建、日志框架整合)

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 1.JDK1.8+ 2.Maven3.5+ 3.IDEA2018+ 4.SpringFramework 5.1.4 官网:www.spring.io Spring的jar包 1.设置pom的依赖 Spring的配置文件 1.配置文件的放置位置:任意位置

    2024年02月05日
    浏览(33)
  • Spring5

    1.Spring是 轻量级 的 开源 的 JavaEE框架 轻量级: 体积比较小,引入的jar包比较少也比较小,可以独立进行使用 开源: 可以免费提供源代码 2.Spring可以解决企业应用开发的复杂性,使开发更简洁,方便 3.Spring的两个核心部分分别是: IOC 和 AOP (1).IOC: 控制反转 , 把创建对象的过程 交给S

    2024年02月08日
    浏览(24)
  • Spring5框架入门基础

    Spring是 轻量级的开源的JavaEE框架 。 Spring可以 解决企业应用开发的复杂性 。 Spring有两个核心部分: IOC 和 AOP IOC :控制反转,把创建对象过程交给Spring进行管理 AOP :面向切面,不修改源代码进行功能增强 Spring特点 方便解耦,简化开发(IOC可以降低耦合性) AOP编程支持 方

    2024年02月05日
    浏览(36)
  • spring5源码篇(9)——mybatis-spring整合原理

    spring-framework 版本:v5.3.19 spring和mybatis的整合无非主要就是以下几个方面: 1、SqlSessionFactory怎么注入? 2、Mapper代理怎么注入? 3、为什么要接管mybatis事务? 在mybatis-spring中,定义了一个新的factoryBean——SqlSessionFactoryBean,我们将其注入到spring容器即可。 其实也不难猜到,这

    2024年02月03日
    浏览(28)
  • spring5源码篇(12)——spring-mvc请求流程

    spring-framework 版本:v5.3.19 总体流程在 DispatchServelt#doDispatch 方法 首先会获取根据url去映射对应的处理器(即接口执行方法) 看到对应的 getHandler 方法 为方便阅读,进入debug。可以看到springmvc默认为我们注册了三个handlerMapping。 springMvc中的各个组件如处理器映射器,处理器适配

    2024年02月15日
    浏览(31)
  • Spring5深入浅出篇:Spring与工厂设计模式简介

    轻量级 JavaEE的解决⽅案 spring实际上就是对原有设计模式的一种高度封装和整合 整合设计模式 工厂设计模式 什么是工厂设计模式 当UserServiceImpl发生变化是会影响到userService等相关联的类,在线上环境不利于维护

    2024年01月18日
    浏览(43)
  • Spring5学习随笔-基础注解编程

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 指的是在类或方法上加入特定的注解(@XXX),完成特定功能的开发. 注解开发方便 代码简介 开发速度大大提高 Spring开发潮流 Spring2.x引入注解

    2024年02月05日
    浏览(33)
  • Spring5 AOP 默认使用 JDK

    这是博主在使用dubbo实现远程过程调用的时候遇到的问题: 我们如果在服务提供者类上加入@Transactional事务控制注解后,服务就发布不成功了。原因是事务控制的底层原理是为服务提供者类创建代理对象,而默认情况下Spring是基于JDK动态代理方式创建代理对象,而此代理对象

    2024年02月13日
    浏览(22)
  • Spring5学习随笔-事务属性详解(@Transactional)

    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】 事务是 保证业务操作完整性的一种数据库机制 事务的4特点:ACID A 原子性 C 一致性 I 隔离性 D 持久性 JDBC: Connection.setAutoCommit(false) Connect

    2024年02月05日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包