IoC 概念简介 IoC 是什么 IoC,是 Inversion of Control 的缩写,即控制反转。 上层模块不应该依赖于下层模块,它们共同依赖于一个抽象 抽象不能依赖于具体实现,具体实现依赖于抽象 注:又称为依赖倒置原则。这是设计模式六大原则之一。 IoC 不是什么技术,而是一种设计思想。在 Java 开发中,IoC 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解 Ioc 呢?理解 Ioc 的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: **谁控制谁,控制什么:**传统 JavaSE 程序设计,我们直接在对象内部通过 new 进行创建对象,是程序主动去创建依赖对象;而 IoC 是有专门一个容器来创建这些对象,即由 IoC 容器来控制对象的创建;谁控制谁?当然是 IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。 **为何是反转,哪些方面反转了:**有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象, ...
写在前面的话: 本脚本模板不收取任何费用,初衷就是不想重复造梯子,如果对各位有帮助的话,可以给作者打上一杯奶茶钱,目前插件还是有点小 Bug,但是不影响使用,现在各平台相关的代码生成插件也比较成熟了,并且带有独特的特色和一些自带的代码提示功能,使用感受整体都不错,但是好用的插件肯定是要收费的啦~具体的请参考下面相关插件查看 查看视频教程 参考插件 MyBatisCodeHelper-Pro codehelper.generator mybatis mybatis generator pageHelper mybatis-generator-gui mybatis generator plugin mybatisplus 功能介绍 本脚本只适用于 EasyCode 模板搭配使用支持生成代码具体如下: controller 层代码 ...
递归的概念 简单的说:递归就是方法调用自己,每次调用传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁 两个案列说明递归的调用机制 123456789101112public class Demo1 { public static void main(String[] args) { test(4); } public static void test(int n){ if(n>2){ test(n-1); }//else{加上else输出结果又是怎么样呢! System.out.println("n="+n); //} }} 建议先自己分析一下这个运行结果是啥! 然后在idea里面编译运行看一下结果,是不是和你想的一样。 递归调用的规则: 1.当程序执行到一个方法时,就会开辟一个独立的空间(栈 ) 2.就像上面的案例,当 ...
本文根据洪哥哔哔教程二改~解决哔哔发送图片问题 相关教程 教程地址 洪哥哔哔教程 洪哥哔哔教程https://blog.zhheo.com/p/a6947667.html 「哔哔点啥」微信公众号 「哔哔点啥」微信公众号 2.0 问题说明 可以看到问题很明显图片大小图片上下有多余得代码(洪哥 js 得问题)无法预览 修改步骤 源码修改方式cdn链接替换(推荐) 将洪哥 heobbe.js 文件拉取到博客存放 js 得目录下 修改其中得urlToLink方法 1234567891011121314151617181920212223242526272829function urlToLink(str) { console.log("判断是否是图片", str.indexOf("http")); if (str.indexOf("http") != -1) { ...
好处:大幅度减少 Spring 配置 坏处:依赖不能明确管理,可能会有多个 bean 同时符合注入规则,没有清晰的依赖关系。 在装配的时候会有两种方式,byName和byType两种。 byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的 bean,并将其与属性自动装配。 byType:如果容器中存在一个与指定属性类型相同的 bean,那么将与该属性自动装配;如果存在多个该类型 bean,那么抛出异常,并指出不能使用 byType 方式进行自动装配;如果没有找到相匹配的 bean,则什么事都不发生,也可以通过设置 什么是自动装配 自动装配:也就是 Spring 会在容器中自动的查找,并自动的给 bean 装配及其关联的属性 涉及到自动装配 bean 的依赖关系时,Spring 有多种处理方式。Spring 提供了 4 种自动装配策略 123456789101112131415161718public interface AutowireCapableBeanFactory extends BeanFactory { // 无需自动装配 ...
写在前面得话 学习@Autowired 之前建议先学会使用 byType 和 byNameSpring的自动装配https://hgm.vercel.app/post/63755f3a/ @Autowired 详解 首先要知道另一个东西,default-autowire,它是在 xml 文件中进行配置的,可以设置为 byName、byType、constructor 和 autodetect;比如 byName,不用显式的在 bean 中写出依赖的对象,它会自动的匹配其它 bean 中 id 名与本 bean 的 set**相同的,并自动装载。 @Autowired 是用在 JavaBean 中的注解,通过 byType 形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已。 autowire 四种模式的区别 先看一下 bean 实例化和@Autowired 装配过程: 一切都是从 b ...
@Autowired注解相信每个 Spring 开发者都不陌生了! 但是当我们使用 IDEA 写代码的时候,经常会发现@Autowired注解下面是有小黄线的,我们把小鼠标悬停在上面,可以看到这个如下图所示的警告信息: 那么为什么 IDEA 会给出Field injection is not recommended这样的警告呢? 下面带着这样的问题,一起来全面的了解下 Spring 中的三种注入方式以及他们之间在各方面的优劣。 Spring 中的三种依赖注入方式 Field Injection @Autowired注解的一大使用场景就是Field Injection。 具体形式如下: 这种注入方式通过 Java 的反射机制实现,所以 private 的成员也可以被注入具体的对象。 Constructor Injection Constructor Injection是构造器注入,是我们日常最为推荐的一种使用方式。 具体形式如下: 这种注入方式很直接,通过对象构建的时候建立关系,所以这种方式对对象创建的顺序会有要求,当然 Spring 会为你搞定这样的先后顺序,除非你出现循环 ...
@Configuration 的使用 从 Spring3.0,@Configuration 用于定义配置类,可替换 xml 配置文件,被注解的类内部包含有一个或多个被@Bean 注解的方法,这些方法将会被 AnnotationConfigApplicationContext 或 AnnotationConfigWebApplicationContext 类进行扫描,并用于构建 bean 定义,初始化 Spring 容器。也就是说使用了这个注解完全不需要我们手动去配置applicationContext.xml了 注意:@Configuration 注解的配置类有如下要求: @Configuration 不可以是 final 类型; @Configuration 不可以是匿名类; 嵌套的 configuration 必须是静态类。 @Configuation 加载 Spring 方法 @Configuration 配置 spring 并启动 spring 容器 @Configuration 标注在类上,相当于把该类作为 spring 的 xml 配置文件中的<beans&g ...
在探究注解前先了解一下注解,何为注解?注解本质上就是一个类,开发中我们可以使用注解 取代 xml配置文件。 注意:在使用注解开发时,请查看对应的框架是否需要开启注解支持,否则用了注解也无效!!! IOC 容器相关 @Componen: @Component注解 @component(value):用于创建对象的,作用于类.value:指定 bean 的 id。如果不指定 value 属性,默认 bean 的 id 是当前类的类名。首字母小写。@component是 spring 中的一个注解,它的作用就是实现 bean 的注入,代替了传统的 xml 方式注入 bean123456//@Component组件 等价于:<bean id="user" class="com.ms.pojo.User"/>//也说明这个类被Spring接管了,注册到了容器中@Component("user") //("user")其实就是Bean id ...
教程步骤 点击查看教程 1.首先创建一个 Maven 项目,一路 next,起下项目名字2.建好之后就是这个样子3.然后右键项目找到 open modules setting (打开模块设置) 或者快捷键 ctrl+shift +alt+s 或者右上角有个类似文件夹的图标4.打开以后点 Modules 点项目名点 add 找到 web5.然后修改 web.xml 和 web 资源目录的路径注意:路径修改如果你不懂就放我写的路径:项目名\src\main\webapp\ …xml 和资源路径应该放在同一个 webapp 下面注意:修改完后点击确定,他会提示你说没有 webapp 这个项目是否创建,点击创建即可创建完成的样子:6.创建 Web application Exploded依然还是打开模块设置>选择模块>点击刚刚创建好的 web 目录,如果下面有黄色三角感叹号的提示的话,咱们可以直接点击右侧的创建如果没有的话: 点击 artifacts 点+号 选择 Web application Exploded,Fr ...