【2021Spring编程实战笔记】Spring开发分享~(下)

简介: 【2021Spring编程实战笔记】Spring开发分享~(下)

【2021Spring编程实战笔记】Spring开发分享~(上)+https://developer.aliyun.com/article/1621239

04、构造注入(用的不多,只做了解)

  • 将需要注入的对象声明为成员变量
package construct;
public class Car {
    private String brand;
    private String corp;
    private Double price;
    private int maxSpeed;
}
  • 利用构造函数,我写了两个:
package construct;
public class Car {
    public Car(String brand, String corp, Double price) {
        this.brand = brand;
        this.corp = corp;
        this.price = price;
    }
    public Car(String brand, String corp, int maxSpeed) {
        this.brand = brand;
        this.corp = corp;
        this.maxSpeed = maxSpeed;
    }
}
  • 工厂容器里边配置一下:
<?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="car" class="construct.Car">
        <constructor-arg value="Audi" type="java.lang.String"/>
        <constructor-arg value="luntai" type="java.lang.String"/>
        <constructor-arg value="30" type="java.lang.Double"/>
    </bean>
    <bean id="car1" class="construct.Car">
        <constructor-arg value="Audi" type="java.lang.String"/>
        <constructor-arg value="luntai" type="java.lang.String"/>
        <constructor-arg value="300" type="int"/>
    </bean>
</beans>
  • 构造注入的测试
package construct;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CarTest {
    public static void main(String[] args) {
        ApplicationContext Context = new ClassPathXmlApplicationContext("/init/init.xml");
        Car car = (Car) Context.getBean("car");
        System.out.println(car.toString());
    }
}
  • 执行:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBfGmG1O-1604408298814)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201028105124.png)]

05、自动注入(用的也不多)

package autodi;
public class BookDAOImpl implements BookDAO {
    private BookDAO bookDAO;
    @Override
    public void save() {
        System.out.println("BookDAO invoke~~~");
    }
}
<?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="bookDAO" class="autodi.BookDAOImpl"/>
    <!--
        autowrite的作用:用来指定当前组件中依赖的组件的注入方式是什么
        注意:类中成员变量与工厂中bean的id一致则自动赋值,否则不注入
        byname:根据类中的成员变量名进行注入
        bytype:根据类中的成员变量类型进行注入
    -->
    <!--<bean id="bookService" class="autodi.BookServiceImpl" autowire="byName"/>-->
    <!--
        类中成员变量的类型与工厂中bean的类型一致则强行注入,否则不注入。
    -->
    <bean id="bookService" class="autodi.BookServiceImpl" autowire="byType"/>
</beans>

06、spring工厂的细节

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-583X3hlZ-1604408298815)(https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20201028204142.png)]

07、AOP面向切面编程

7.1、静态代理(proxy)

  • 给一幅图做一个简单介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XhNOlhdV-1604408298821)(https://img.rruu.net/image/5f9a7bea0f104)]

7.2、动态代理

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnV8QcCC-1604408298824)(https://img.rruu.net/image/5f9aa84aab174)]

7.3、面向切面编程AOP原理概念

7.4、AOP编程的编程步骤

7.4.1引入AOP编程相关的依赖

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>
  </dependencies>

7.4.2开发项目额外功能通知

7.4.3配置切面spring.xml

7.5、aop编程之环绕通知

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsEUfSke-1604408298833)(https://img.rruu.net/image/5f9faf6ab5d89)]

7.6、切入点表达式

  • 切到某个类,就会为这个类创建 动态代理对象
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QFkNJslW-1604408298835)(https://img.rruu.net/image/5fa0a90a1676a)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bf2nKyjC-1604408298836)(https://img.rruu.net/image/5fa0aaebe47a7)]

08、IOC和AOP的复习

09、spring创建复杂对象

除了我们之前学过的new简单对象,其实还有很多对象是不能new出来的,比如抽象类对象,我们需要用官方提供的方法来对它进行实例化,然后调用实现功能。

对于复杂对象,我们不能交给工厂处理,也不能new处理。那么该如何创建这些复杂对象呢?

10、spring整合mybatis思路分析

10.1、引入依赖

bj-1604408298837)]

08、IOC和AOP的复习

  • [外链图片转存中…(img-0gRvXlDK-1604408298839)]

[外链图片转存中…(img-A6sMkGOT-1604408298840)]

09、spring创建复杂对象

除了我们之前学过的new简单对象,其实还有很多对象是不能new出来的,比如抽象类对象,我们需要用官方提供的方法来对它进行实例化,然后调用实现功能。

对于复杂对象,我们不能交给工厂处理,也不能new处理。那么该如何创建这些复杂对象呢?

[外链图片转存中…(img-VsptG5pO-1604408298841)]

[外链图片转存中…(img-uZtdmRb6-1604408298842)]

[外链图片转存中…(img-eCJdi5fG-1604408298843)]

10、spring整合mybatis思路分析

10.1、引入依赖

目录
相关文章
|
10天前
|
XML 监控 前端开发
Spring Boot中的WebFlux编程模型
Spring WebFlux 是 Spring Framework 5 引入的响应式编程模型,基于 Reactor 框架,支持非阻塞异步编程,适用于高并发和 I/O 密集型应用。本文介绍 WebFlux 的原理、优势及在 Spring Boot 中的应用,包括添加依赖、编写响应式控制器和服务层实现。WebFlux 提供高性能、快速响应和资源节省等优点,适合现代 Web 应用开发。
50 15
|
4天前
|
监控 Java 应用服务中间件
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
19 6
|
14天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
1月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
420 0
|
23天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
Java Spring
一键注入 Spring 成员变量,顺序编程
介绍了一款针对Spring框架开发的插件,旨在解决开发中频繁滚动查找成员变量注入位置的问题。通过一键操作(如Ctrl+1),该插件可自动在类顶部添加`@Autowired`注解及其成员变量声明,同时保持光标位置不变,有效提升开发效率和代码编写流畅度。适用于IntelliJ IDEA 2023及以上版本。
一键注入 Spring 成员变量,顺序编程
|
1月前
|
XML JSON Java
Spring Boot 开发中常见的错误
本文总结了 Java 开发中常见的几个问题及其改进方法,包括:1. 过度使用 `@Component` 注解;2. `@ResponseBody` 注解的错误用法;3. `@Autowired` 的不当使用;4. `application.properties` 管理不善;5. 异常处理不当。每部分详细解释了错误情况和建议的改进方案,并提供了相应的代码示例。
65 11
|
1月前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
58 5
|
1月前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
2月前
|
前端开发 JavaScript Java
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
65 1