cgb2105-day15 忘是亡心i 2021-09-11 03:10 318阅读 0赞 ### 文章目录 ### * * 一,修改端口号 * * \--1,创建application.yml文件 * \--2,创建数据 * 二,SpringBoot热部署 * * \--1,添加jar包的依赖 * \--2,配置选项 * \--3,改完资源,直接build * 三,Lombok * * \--1,概述 * \--2,步骤 * * 安装插件 * 添加jar包的依赖 * 修改POJO类 * 测试 * 四,Spring的IOC * * \--1,概述 * \--2,XML方式实现IOC * * 项目结构 * 创建类 * 创建配置文件,配置类的信息 * 读取配置文件,直接获取对象 * 总结 * \--3,注解方式实现IOC * * 创建类,使用注解 * 创建配置文件,只需要指定包的路径 * 读取配置文件,获取对象 * 总结 * 五,模拟IOC * * \--1,创建Bean类,描述类的信息 * \--2,创建Spring容器,并指定要维护的类,提供getBean(),根据beanName获取对象 * \--3,创建类 * \--4,测试 * \--5,总结 ## 一,修改端口号 ## ### –1,创建application.yml文件 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70] ### –2,创建数据 ### ![在这里插入图片描述][20210716095224355.png] ## 二,SpringBoot热部署 ## ### –1,添加jar包的依赖 ### <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> ### –2,配置选项 ### 组合键: ctrl + shift + alt + / 或者 ctrl + alt + a ![在这里插入图片描述][20210716101737305.png] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 1] ### –3,改完资源,直接build ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 2] ## 三,Lombok ## ### –1,概述 ### 简化了POJO里的实体类的写法,不用自己写set get tostring… ### –2,步骤 ### #### 安装插件 #### settings–搜lombok–installed #### 添加jar包的依赖 #### <!--支持lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> #### 修改POJO类 #### –去掉set get tostring –给类上加lombok提供的注解 @Data:自动提供 get set tostring equals hashCode @NoArgsConstructor:提供无参构造 @AllArgsConstructor:提供全参构造 @Accessors(chain = true) : 提供链式编程 package cn.tedu.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.util.Arrays; import java.util.Date; //Model层,用来封装数据 //类里的属性名 ---和页面中 name属性的值 必须相同 !!!否则不会封装数据 @Data @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public class Student { private String user ; private Integer age ; private Integer sex ; private String[] hobby ; //保存了页面提价的多个爱好 private Integer edu; //页面提交的日期都是String类型,需要自己变成Date类型,否则页面永远400错误 @DateTimeFormat(pattern="yyyy-MM-dd" ) private Date intime; } #### 测试 #### Student st = new Student(); st.setAge(10); st.setSex(1); st.setSex(1); st.setSex(1); st.setSex(1); st.setSex(1); st.setSex(1); //lombok提供的链式编程 st.setAge(10).setSex(1).getUser(); ## 四,Spring的IOC ## ### –1,概述 ### Inversion of Control,控制反转,是指把管理对象的权利交给spring框架。 ### –2,XML方式实现IOC ### #### 项目结构 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 3] #### 创建类 #### package cn.tedu.spring; public class Hello { void hi(){ System.out.println("hello spring ioc~ "); } } #### 创建配置文件,配置类的信息 #### 选中resources-右键-new-xml config…-spring config-输入文件名-回车 <?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"> <!-- 配置一个类的信息 id是bean的唯一标识 class是类的全路径 当配置完成时,spring框架自动ioc,帮你new 。 Map<String,Object> - { hello = new Hello() } Map<String,Object> - { hello = Class.forName("cn.tedu.spring.Hello").newInstance() } --> <bean id="hello" class="cn.tedu.spring.Hello"></bean> </beans> #### 读取配置文件,直接获取对象 #### package cn.tedu.test; import org.junit.jupiter.api.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestIOC { //单元测试junit方法:@Test public void 没有参数 @Test public void ioc(){ //读取配置文件--参数是文件的路径 ClassPathXmlApplicationContext spring = new ClassPathXmlApplicationContext("spring-config.xml"); //获取对象--参数是配置文件里bean的id属性值 Object o = spring.getBean("hello"); System.out.println(o);//cn.tedu.spring.Hello@302552ec //向下造型--专门用子类的资源 Hello h = (Hello) o ; h.hi(); } } #### 总结 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 4] ### –3,注解方式实现IOC ### 哪个类想让spring框架new,就在类上使用注解:@Component / @Service / @Controller #### 创建类,使用注解 #### package cn.tedu.spring2; import org.springframework.stereotype.Component; //Map<类名首字母要小写,类的对象> - {user=new User()} @Component public class User { public void get(){ System.out.println("hello springioc"); } } #### 创建配置文件,只需要指定包的路径 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 5] <?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!-- 包扫描:只需要指定从哪个包开始扫描, 用了@Component注解的类,自动ioc base-package需要指定一个包的路径 --> <context:component-scan base-package="cn.tedu.spring2"></context:component-scan> </beans> #### 读取配置文件,获取对象 #### package cn.tedu.test; import org.junit.jupiter.api.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; //测试 注解开发 public class TestIOC2 { @Test public void ioc2(){ //1,读取核心配置文件 ClassPathXmlApplicationContext spring = new ClassPathXmlApplicationContext( "spring-config2.xml"); //2,getBean -- 参数是类名,但是首字母要变成小写才行 Object o = spring.getBean("user"); System.out.println(o);//cn.tedu.spring2.User@37d4349f Object o2 = spring.getBean("userInfo"); System.out.println(o2);//cn.tedu.spring2.UserInfo@2805d709 } } #### 总结 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 6] ## 五,模拟IOC ## ### –1,创建Bean类,描述类的信息 ### package cn.tedu.myioc; //描述一个类的信息,spring把每个类当做一个bean public class Bean { private String beanName;//类的名字 private String beanPath;//类的全路径 //constructors public Bean(){ } public Bean(String beanName, String beanPath) { this.beanName = beanName; this.beanPath = beanPath; } //get set tostring public String getBeanName() { return beanName; } public void setBeanName(String beanName) { this.beanName = beanName; } public String getBeanPath() { return beanPath; } public void setBeanPath(String beanPath) { this.beanPath = beanPath; } @Override public String toString() { return "Bean{" + "beanName='" + beanName + '\'' + ", beanPath='" + beanPath + '\'' + '}'; } } ### –2,创建Spring容器,并指定要维护的类,提供getBean(),根据beanName获取对象 ### package cn.tedu.myioc; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MyIOC { //1,创建list,存好多bean private List<Bean> beans = new ArrayList<>(); public MyIOC() throws Exception { Bean b1 = new Bean("hello","cn.tedu.myioc.Hello"); Bean b2 = new Bean("user","cn.tedu.myioc.User"); beans.add(b1); beans.add(b2); //new init(); } Map<String,Object> map = new HashMap<>(); //2,创建map,存对象 { hello=new Hello() , user=new User()} public void init() throws Exception { //遍历list,获取每个bean for(Bean b : beans){ String key = b.getBeanName(); String quanlujing = b.getBeanPath(); Object value = Class.forName(quanlujing).newInstance(); map.put(key,value); } } //3,getBean()--根据key获取value public Object getBean(String beanname){ return map.get(beanname) ; } } ### –3,创建类 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 7] ### –4,测试 ### package cn.tedu.myioc; public class Test1 { public static void main(String[] args) throws Exception { MyIOC my = new MyIOC(); //根据类名,获取类的对象 Object o = my.getBean("hello"); System.out.println(o);//cn.tedu.myioc.Hello@54bedef2 //根据类名,获取类的对象 Object o2 = my.getBean("user"); System.out.println(o2);//cn.tedu.myioc.User@5caf905d } } ### –5,总结 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 8] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70]: /images/20210911/63dd2a25124949d6bef17ddbb868bcfb.png [20210716095224355.png]: /images/20210911/1e0eee293a8d45729187d5d342c09397.png [20210716101737305.png]: /images/20210911/c5d3634e92514604a5356e8545680714.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 1]: /images/20210911/125b2b137a064cf29fd493d53d902f6a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 2]: /images/20210911/6a2df2e5b0ae40e48d4c7a598c06b281.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 3]: /images/20210911/90a115ff486f493ba50edcd3b3c614c4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 4]: /images/20210911/f77828c812144abb8d0362fb16239270.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 5]: /images/20210911/a11c2ec5f65440c8ba61c99bb25c3734.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 6]: /images/20210911/8c04fb0b9bc042cab7cd3f574154f08f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 7]: /images/20210911/cb8e71cc11894a75977a12d6899df74a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 8]: /images/20210911/17c3b22e1cad4b4287a4395b6c17a993.png
相关 cgb2105-day15 文章目录 一,修改端口号 \--1,创建application.yml文件 \--2,创建数据 二,S 忘是亡心i/ 2021年09月11日 03:10/ 0 赞/ 319 阅读
相关 cgb2105-day12 文章目录 一,Spring Boot \--1,创建Spring Boot项目 \--2,配置maven ╰半橙微兮°/ 2021年09月11日 03:10/ 0 赞/ 329 阅读
相关 cgb2105-day09 文章目录 一,js的语句 二,js的数组 三,js的函数 四,Maven \--1,创建Mave 心已赠人/ 2021年09月11日 03:04/ 0 赞/ 354 阅读
相关 cgb2105-day08 文章目录 一,模拟 服务器 解析浏览器发来的数据 二,CSS选择器 三,练习HTML和CSS \--1,创建c 谁践踏了优雅/ 2021年09月11日 03:04/ 0 赞/ 294 阅读
还没有评论,来说两句吧...