在lagou的训练营的学习历程

SpringIOC实例化Bean的三种方式:
1.使用无参构造器
2.静态方法
3.实例化方法。他要先实例化创建类(和2的区别),再调用。

XML注入属性
DI依赖注入,根据实体类的属性的名称使用name属性注入,index按照对应位置
(set注入使用bean使用ref,一般属性用value。)

<!--id标识对象,class是类的全限定类名-->
<!--scope:定义bean的作用范围 singleton:单例,IOC容器中只有一个该类对象,默认为singletonprototype:原型(多例),每次使用该类的对象(getBean),都返回给你一个新的对象,Spring只创建对象,不管理对象 -->
-<bean destroy-method="destory" init-method="init" scope="singleton" class="com.dao.impl.JdbcTemplateDaoImpl" id="accountDao">
<!--set注入使用property标签,如果注入的是另外一个bean那么使用ref属性,如果注入的是普通值那么使用的是value属性-->
<!--<property name="ConnectionUtils" ref="connectionUtils"/><property name="name" value="zhangsan"/><property name="sex" value="1"/><property name="money" value="100.3"/>-->
<!--<constructor-arg index="0" ref="connectionUtils"/><constructor-arg index="1" value="zhangsan"/><constructor-arg index="2" value="1"/><constructor-arg index="3" value="100.5"/>-->
<!--name:按照参数名称注入,index按照参数索引位置注入-->
<constructor-arg ref="connectionUtils" name="connectionUtils"/>
<constructor-arg name="name" value="zhangsan"/>
<constructor-arg name="sex" value="1"/>
<constructor-arg name="money" value="100.6"/>
<!--set注入注入复杂数据类型-->
-<property name="myArray">
<array>
</property>
-<property name="myMap">
-<map>
<entry value="value1" key="key1"/>
<entry value="value2" key="key2"/>
</map>
</property>
-<property name="mySet">
-<set>
<value>set1</value>
<value>set2</value>
</set>
</property>
-<property name="myProperties">
-<props>
<prop key="prop1">value1</prop>
<prop key="prop2">value2</prop>
</props>
</property>
</bean>

XML和注解模式注入
@Componene注解去注解关联的bean标签,在类上加注解
针对不同的层面有三个别名@Controller@Service@Reposittory这四个注解完全一样
一个区分而已。
@Autowired加在属性上按照类型注入(按照你给的类型)
如果一个接口有多个实现类可以增加@Qualifier使用制定具体id
@Resource按照名称注入时jdk的注解。jdk11移除(不建议使用)使用spring推荐的@Autowired
使用注解要使用配置开启注解扫描。<context>标签

 // @Autowired 按照类型注入 ,如果按照类型无法唯一锁定对象,可以结合@Qualifier指定具体的id
@Autowired
@Qualifier("accountDao")
private AccountDao accountDao;

纯注解,使用java配置类
使用@Configuration标志这个类为配置类
使用@ComponentScan扫描配置
@PropertySourrce配置外部的配置(jdbc配置文件)
@Value变量赋值
@Bean

// @Configuration 注解表明当前类是一个配置类
@Configuration
@ComponentScan({"com.lagou.edu"})
@PropertySource({"classpath:jdbc.properties"})
/*@Import()*/
public class SpringConfig { @Value("${jdbc.driver}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;

把返回的对象加入ioc容器

多个配置类可以使用improt标记一个为启动入口。
javase启动 启动类加载
web启动xml内的监听器

SpringIOC注入的更多相关文章

  1. SpringIOC注入模块中xml文件导入其他xml文件配置

    如果我们在spring框架中配置了多个xml文件,我们可以在读取配置文件的时候把这些xml文件一下全都读取 也可以只读一个总的xml文件,在这个总的xml文件中把其他的xml全都都导入进来. 例如: ...

  2. 使用Java元注解和反射实现简单MVC框架

    Springmvc的核心是DispatcherServlet来进行各种请求的拦截,进而进行后续的各种转发处理.流程图如下: 说明:客户端发出一个http请求给web服务器,web服务器对http请求进 ...

  3. Spring IOC 概述

    Spring IOC 概述 IOC(Inversion of Control) 控制反转,也叫 DI(D_ependency injection_) 依赖注入.是一种设计思想.不过我并不同意所谓反转的 ...

  4. 黑马_13 Spring Boot:01.spring boot 介绍&&02.spring boot 入门

    13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 SpringBoot基础 1.1 原有 ...

  5. SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean

    SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean 在SpringBoot中开发AspectJ时,使用CTW的方式来织入代码,由于采用这种形式,切面Bean ...

  6. 设计一下类似SpringIoC的注入工具~Lind.DI

    通过注解(特性)的方式进行对象的注册与注入,方便,灵活! 本篇主要讲如何去实现,下一篇主要讲如何把它集成到mvc和api环境里,实现自动的注入! spring ioc工作的过程大致为,统一的注册组件, ...

  7. SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较

    1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  8. Spring-IOC源码解读3-依赖注入

    当容器已经载入了BeanDefinition的信息完成了初始化,我们继续分析依赖注入的原理,需要注意的是依赖注入是用户第一次向IOC容器获取Bean的时候发生的,这里有个例外,那就是如果用户在Bean ...

  9. SpringIOC学习_属性注入(依赖注入)

    一.应用场景:Spring会帮创建实现类的实例,但是有时候我们还需要在类中设置一些属性用于传入设置值,这些跟类紧密关联的属性就叫依赖,通过spring帮忙设置的过程叫依赖注入. 二.依赖注入的实现 A ...

  10. springioc之依赖注入

    1.1.2  IoC能做什么 IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合.更优良的程序.传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类 ...

随机推荐

  1. java pta第二次阶段性总结

    一.前言 经过这三次的pta训练,我对java再一次有了一个新的认识,这三次比起之前难度更大,所涉及的知识点更多.第4.5次作业是在前几次作业上的再次拓展,由三角形拓展到四边形,再由四边形拓展到五边形 ...

  2. CAJ转换为PDF

    方法就是下载一个CAJViewer和一个PDF虚拟打印机 CAJViewer下载: http://cajviewer.cnki.net/ 我下载了7.2版本 PDF虚拟打印机可以是Adobe acro ...

  3. python 函数默认值误区

    当创建python函数时,默认值参数实在执行def语句的时候创建的也即是在创建该函数的时候,而不是在调用该函数的时候创建的. def append(x, lst = []): lst.append(x ...

  4. 解决黑苹果macOS Monterey系统无法正常睡眠、睡眠无法唤醒,唤醒后显示器无输出问题

    1.解决无法睡眠问题:添加睡眠补丁:HibernationFixup.kext, 或者添加ssdt:ssdt-GPRW.aml,并在ACPI补丁中添加热补丁: 2.解决睡眠后无法唤醒.唤醒后显示器无输 ...

  5. python excel使用

    python excel使用 https://blog.csdn.net/m0_59235508/article/details/122808875 pandas不覆盖写入 https://blog. ...

  6. JavaWeb学习--EL表达式

    一.EL表达式: 1.命令表达式: ${作用域对象别名.共享数据} 2.命令作用: 1)EL表达式是EL工具包提供一种特殊命令格式[表达式命令格式] 2)EL表达式在JSP文件上使用 3)负责在JSP ...

  7. c# 一些方法记录

    // 返回当前目录的路径 fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "当前目录下的一个文件"); ...

  8. CATIA的后处理

    同其他的cam软件一样,catia可以使用配置好的后处理文件输出相应的G代码文件, 也可以输出相应的刀位文件. 下图中的1选择的是后处理文件:下图2种设置的是输出刀位文件的格式. 输出G代码: 选择[ ...

  9. Node.js+Vue.js开发王者荣耀手机端官网

    一.项目初始 1.工具安装和环境搭建 node.js.npm.mongodb 编辑器:VScode 2.项目初始化 项目分为三个部分,分别是移动端界面.后台管理界面和node.js开发的整体的服务端 ...

  10. binom_test

    bt <- function(a, b, p = 0.5) {binom.test(a, b+a, 0.5, alternative= c("two.sided"), con ...