Spring5学习笔记——day02 小咪咪 2023-01-02 12:28 218阅读 0赞 ### 文章目录 ### * Spring * * 3、HelloSpring * 4、IOC创建对象方式 * * 4.1 方式一 * 4.2 方式二 * 5、Spring配置 * * 5.1 别名 * 5.2 Bean的配置 * 5.3 import # Spring # > > 参考视频:[B站狂神][B],写这个只是方便个人复习,怎么写是我自己的事,我能看懂就行,没要求非要让你看!白嫖还挑刺,是很没有风度的事情。希望做个有风度的“五好青年”! -------------------- ## 3、HelloSpring ## > 新建项目,导入Jar包 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center] * 注 : spring 需要导入commons-logging进行日志记录 . 利用maven , 它会自动下载对应的依赖项。 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.12.RELEASE</version> </dependency> </dependencies> > 编写代码: 1. 编写一个Hello实体类 package com.github.subei.pojo; public class Hello { private String src; public String getSrc() { return src; } public void setSrc(String src) { this.src = src; } @Override public String toString() { return "Hello{" + "src='" + src + '\'' + '}'; } } 1. 编写spring文件 , 这里命名为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"> <!--使用Spring来创建对象,在spring这些部称Bean--> <bean id="hello" class="com.github.subei.pojo.Hello"> <property name="src" value="Spring"/> </bean> </beans> 3、我们可以去进行测试了 . import com.github.subei.pojo.Hello; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { //解析beans.xml文件 , 生成管理相应的Bean对象 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //getBean : 参数即为spring配置文件中bean的id . Hello hello = (Hello) context.getBean("hello"); System.out.println(hello.toString()); } } ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 1] > 思考: * Hello 对象是谁创建的 ? * hello 对象是由Spring创建的。 * Hello 对象的属性是怎么设置的 ? * hello 对象的属性是由Spring容器设置的。 > 这个过程就叫控制反转 : * 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的。 * 反转 : 程序本身不创建对象 , 而变成被动的接收对象。 > 依赖注入 : 就是利用set方法来进行注入的。 * IOC是一种编程思想,由主动的编程变成被动的接收。 * 可以通过new ClassPathXmlApplicationContext去浏览一下底层源码。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 2] > 修改案例一: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 3] * 在案例一中, 新增一个Spring配置文件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"> <bean id="mysqlImpl" class="com.github.subei.dao.UserDaoMysqlImpl"/> <bean id="oracleImpl" class="com.github.subei.dao.UserDaoOracleImpl"/> <bean id="UserServiceImpl" class="com.github.subei.service.UserServiceImpl"> <!-- ref:引用spring容器中创建好的对象! value:具体的值,基本数帮类型! --> <property name="userDao" ref="mysqlImpl"/> </bean> </beans> * 测试! @Test public void test2(){ // 获取AppLicationcontext;拿到Spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); UserServiceImpl serviceImpl = (UserServiceImpl) context.getBean("UserServiceImpl"); serviceImpl.getUser(); } ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 4] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 5] * OK , 到了现在 , 彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 ! ## 4、IOC创建对象方式 ## ### 4.1 方式一 ### > 方式一:通过无参构造方法来创建。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 6] 1. User.java package com.github.subei.pojo; public class User { private String name; public User() { System.out.println("User的无参构造!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println("name="+ name ); } } 1. 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"> <bean id="user" class="com.github.subei.pojo.User"> <property name="name" value="subei"/> </bean> </beans> 1. 测试类 import com.github.subei.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); // 在执行getBean的时候, user已经创建好, 通过无参构造 User user = (User) context.getBean("user"); // 调用对象的方法 . user.show(); } } ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 7] * 通过debug可以发现,在调用show方法之前,User对象已经通过无参构造初始化了! -------------------- ### 4.2 方式二 ### > 方式二:通过有参构造方法来创建。 1.UserT . java package com.github.subei.pojo; public class UserT { private String name; public UserT(String name) { this.name = name; } public UserT() { System.out.println("UserT被创建了"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show() { System.out.println("name=" + name); } } 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"> <!-- 第一种:根据index参数下标设置 --> <!-- <bean id="userT" class="com.github.subei.pojo.UserT">--> <!-- <constructor-arg index="0" value="subeily——"/>--> <!-- </bean>--> <!-- 第二种:根据参数类型设置,不建议使用 --> <!-- <bean id="userT" class="com.github.subei.pojo.UserT">--> <!-- <constructor-arg type="java.lang.String" value="subeily2——"/>--> <!-- </bean>--> <!-- 第三种:根据参数名字设置 --> <bean id="userT" class="com.github.subei.pojo.UserT"> <!-- name指参数名 --> <constructor-arg name="name" value="subeily3——"/> </bean> </beans> 3、测试 @Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); // 在执行getBean的时候, user已经创建好, 通过无参构造 UserT user = (UserT) context.getBean("userT"); // 调用对象的方法 . user.show(); } ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 8] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 9] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 10] > 总结:在配置文件加载的时候,容器中管理的对象就已经初始化了! ## 5、Spring配置 ## ### 5.1 别名 ### * alias 设置别名 , 为bean设置别名 , 可以设置多个别名。 <!--别名,如果添加了别名,我们也可以使用别名获取到这个对象--> <alias name="userT" alias="userNew"/> ### 5.2 Bean的配置 ### <!-- id:bean 的唯一标识符,也就是相当于我们学的对象名 class:bean 对象所对应的全限定名:包名+类型 name:也是别名,而且name可以同时取多个别名 --> <bean id="user2" class="com.github.subei.pojo.UserT" name="user2,u2,u3"> <property name="name" value="懒羊羊的蛋糕店!"/> </bean> ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 11] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 12] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 13] ### 5.3 import ### > 这个import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个。 <import resource="{path}/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"> <import resource="beans.xml"/> <import resource="beans2.xml"/> <import resource="beans3.xml"/> </beans> ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 14] [B]: https://www.bilibili.com/video/BV1WE411d7Dv [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center]: /images/20221119/4d845881b3ac459ea6c2fbbe3e367423.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221119/29494018c16c451f9578f26dbff25997.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20221119/33398f8dd2304cce96dd15f040c957b2.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 3]: /images/20221119/a35db535d3844fe887b6c2ec32b78dd6.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 4]: /images/20221119/665ca1105cce4863b452709e72b7a328.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 5]: /images/20221119/7f496b7444f24f24b9621710bcbb5e49.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 6]: /images/20221119/a19ff2b97f7b4a9e9f88d3daef076b94.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 7]: /images/20221119/73590680460147ca8683b961a9650d2b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 8]: /images/20221119/d738d7fb358947c1b388d47a795475cb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 9]: /images/20221119/17aac72c850c4e088d6ae786508c8f1a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 10]: /images/20221119/ab2fa70f431e49e0acbd66b180d15206.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 11]: /images/20221119/8dc7696283d44bc7856a787443d9a82a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 12]: /images/20221119/80c418517ff640fcbc07f5b120282c69.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 13]: /images/20221119/d3e7388a64d64b5ca38007500e7f05d3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5_size_16_color_FFFFFF_t_70_pic_center 14]: /images/20221119/3bf1441aad6b464f99a0ddd157b66c8d.png
相关 Spring5学习笔记——day05 文章目录 Spring 10、代理模式 10.1 静态代理 10.2 静态代理再理解 1 川长思鸟来/ 2023年01月10日 14:56/ 0 赞/ 169 阅读
相关 Spring5学习笔记——day04 文章目录 Spring 8、使用注解开发 8.1 bean 8.2 属性如何注入 8.3 r囧r小猫/ 2023年01月10日 14:55/ 0 赞/ 210 阅读
相关 Spring5学习笔记——day03 文章目录 Spring 6、依赖注入 6.1 构造器注入 6.2 Set 注入 (重点) ╰+攻爆jí腚メ/ 2023年01月03日 02:00/ 0 赞/ 294 阅读
相关 Spring5学习笔记——day02 文章目录 Spring 3、HelloSpring 4、IOC创建对象方式 4.1 方式一 4. 小咪咪/ 2023年01月02日 12:28/ 0 赞/ 219 阅读
相关 Spring5学习笔记——day01 文章目录 Spring 1、Spring 1.1 简介 1.2 优点 1.3 组成 曾经终败给现在/ 2022年12月31日 13:23/ 0 赞/ 238 阅读
相关 Mybatis学习笔记——day02 文章目录 Mybatis 3、CRUD 1、namespace 2、select 3、I 叁歲伎倆/ 2022年12月30日 01:28/ 0 赞/ 247 阅读
相关 oracle学习笔记--day02 SQL 表 创建表 1: create table 表名( 列名1 列类型1, 列名2 列类型2, ... ) \[tablespace 表空间 忘是亡心i/ 2022年06月17日 14:13/ 0 赞/ 319 阅读
相关 安卓学习笔记_Day_02 帧布局: 每一个组件为一帧,整个布局就是每个组件一个个之间的叠加。 <?xml version="1.0" encoding="utf-8"?> <Fr 女爷i/ 2022年04月25日 00:48/ 0 赞/ 250 阅读
相关 hibernate学习笔记(day02) 文章目录 hibernate学习流程 1. hibernate中的实体规则 1.1 实体类创建的注意事项 1. 向右看齐/ 2021年12月17日 01:25/ 0 赞/ 382 阅读
相关 Spring 学习笔记(day02) 文章目录 spring-day02 1 使用注解配置spring 1.1 步骤 1.2 将对象注册到容器 梦里梦外;/ 2021年12月09日 14:57/ 0 赞/ 389 阅读
还没有评论,来说两句吧...