首页 > 其他分享 >SSM框架-Spring学习日记3

SSM框架-Spring学习日记3

时间:2023-03-02 15:45:56浏览次数:42  
标签:String Spring void private public SSM address 日记 name

依赖注入(DI)

依赖注入(Dependency Injection,DI)。

依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 。

注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 。

Set 注入

要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is .

测试pojo类 :

Address.java

 public class Address {
 
     private String address;
 
     public String getAddress() {
         return address;
    }
 
     public void setAddress(String address) {
         this.address = address;
    }
 }

Student.java

 package com.kuang.pojo;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
 public class Student {
 
     private String name;
     private Address address;
     private String[] books;
     private List<String> hobbys;
     private Map<String,String> card;
     private Set<String> games;
     private String wife;
     private Properties info;
 
     public void setName(String name) {
         this.name = name;
    }
 
     public void setAddress(Address address) {
         this.address = address;
    }
 
     public void setBooks(String[] books) {
         this.books = books;
    }
 
     public void setHobbys(List<String> hobbys) {
         this.hobbys = hobbys;
    }
 
     public void setCard(Map<String, String> card) {
         this.card = card;
    }
 
     public void setGames(Set<String> games) {
         this.games = games;
    }
 
     public void setWife(String wife) {
         this.wife = wife;
    }
 
     public void setInfo(Properties info) {
         this.info = info;
    }
 
     public void show(){
         System.out.println("name="+ name
                 + ",address="+ address.getAddress()
                 + ",books="
        );
         for (String book:books){
             System.out.print("<<"+book+">>\t");
        }
         System.out.println("\n爱好:"+hobbys);
 
         System.out.println("card:"+card);
 
         System.out.println("games:"+games);
 
         System.out.println("wife:"+wife);
 
         System.out.println("info:"+info);
 
    }
 }

1、常量注入

 <bean id="student" class="com.kuang.pojo.Student">
     <property name="name" value="小明"/>
 </bean>

测试:

 @Test
 public void test01(){
     ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
 
     Student student = (Student) context.getBean("student");
 
     System.out.println(student.getName());
 
 }

2、Bean注入

注意点:这里的值是一个引用,ref

 <bean id="addr" class="com.kuang.pojo.Address">
     <property name="address" value="重庆"/>
 </bean>
 
 <bean id="student" class="com.kuang.pojo.Student">
     <property name="name" value="小明"/>
     <property name="address" ref="addr"/>
 </bean>

3、数组注入

 <bean id="student" class="com.kuang.pojo.Student">
     <property name="name" value="小明"/>
     <property name="address" ref="addr"/>
     <property name="books">
         <array>
             <value>西游记</value>
             <value>红楼梦</value>
             <value>水浒传</value>
         </array>
     </property>
 </bean>

4、List注入

 <property name="hobbys">
     <list>
         <value>听歌</value>
         <value>看电影</value>
         <value>爬山</value>
     </list>
 </property>

5、Map注入

 <property name="card">
     <map>
         <entry key="中国邮政" value="456456456465456"/>
         <entry key="建设" value="1456682255511"/>
     </map>
 </property>

6、set注入

 <property name="games">
     <set>
         <value>LOL</value>
         <value>BOB</value>
         <value>COC</value>
     </set>
 </property>

7、Null注入

 <property name="wife"><null/></property>

8、Properties注入

 <property name="info">
     <props>
         <prop key="学号">20190604</prop>
         <prop key="性别">男</prop>
         <prop key="姓名">小明</prop>
     </props>
 </property>

p命名和c命名注入

User.java :【注意:这里没有有参构造器!】

 public class User {
     private String name;
     private int age;
 
     public void setName(String name) {
         this.name = name;
    }
 
     public void setAge(int age) {
         this.age = age;
    }
 
     @Override
     public String toString() {
         return "User{" +
                 "name='" + name + '\'' +
                 ", age=" + age +
                 '}';
    }
 }

1、P命名空间注入 : 需要在头文件中加入约束文件

 导入约束 : xmlns:p="http://www.springframework.org/schema/p"
 
 <!--P(属性: properties)命名空间 , 属性依然要设置set方法-->
 <bean id="user" class="com.kuang.pojo.User" p:name="狂神" p:age="18"/>

2、c 命名空间注入 : 需要在头文件中加入约束文件

 导入约束 : xmlns:c="http://www.springframework.org/schema/c"
 <!--C(构造: Constructor)命名空间 , 属性依然要设置set方法-->
 <bean id="user" class="com.kuang.pojo.User" c:name="狂神" c:age="18"/>

发现问题:爆红了,刚才我们没有写有参构造!

解决:把有参构造器加上,这里也能知道,c 就是所谓的构造器注入!

测试代码:

 @Test
 public void test02(){
     ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
     User user = (User) context.getBean("user");
     System.out.println(user);
 }

所以p命名是set注入,c命名是构造器注入

标签:String,Spring,void,private,public,SSM,address,日记,name
From: https://www.cnblogs.com/lhzycs/p/17172004.html

相关文章

  • Springboot Condition 实用讲解,只看一遍包学会
    前言 该篇文章,还是一贯的风格,源码+示例+自言自语的分析,目的只有一个:就是想让大家都会玩 Condition、Conditional。   正文先看看Condition是被放在包spr......
  • Spring Java配置
    从Spring4开始可以通过Java配置方式取代XML配置.这也是SpringBoot配置的方式.java配置方式是通过@Configuration和@Bean这两个注解实现.1.1@Configuration和@Bean ......
  • SpringMVC学习之基础篇
    浏览器地址栏请求:http:localhost:8080/springmvc_hello/hello?username=kkweb.xml:<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/......
  • spring中集成log4j
    在spring中集成log4j,进行日志的记录。需要引入log4j.jar包在web.xml文件中添加以下代码:<!--log4j的配置--><context-param><param-name>webAppRootKey</param-name......
  • SpringBoot+MybatisPlus+MySql 自动生成代码 自动分页
    SpringBoot+MybatisPlus+MySql自动生成代码自动分页一、配置<!--Mybatisplus--><dependency><groupId>com.baomidou</groupId>......
  • Xmemcached与SpringBoot实际案例
    在本人的这篇文章《​​Xmemcached集群与SpringBoot整合​​》基础上,进行XMemcached与SpringBoot实际案例的结合。有以下这张表,将这张表的增删改查操作都添加到XMemcached中......
  • springMVC快速入门
    创建控制层继承org.springframework.web.servlet.mvc.ControllerpublicclassMyControllerimplementsController{@OverridepublicModelAndViewhandleReq......
  • PBS系统踩坑日记
    1.windows系统能通过xshell连接服务器,pycharm连接不上软件问题,直接重装2.提交作业命令psubxxx.psb/sh3.提交交互作业直接退出出现错误,但不会在配置的文件中显示(大坑)......
  • springboot后端接收不到前端传来的表单值
    为啥接收不到因为传来的字段值太大了,springboot默认启动依赖tomcat,tomcat默认接收表单值最大为2MB,将server.tomcat.max-http-form-post-size这个配置调大即可#yml方式s......
  • SpringBoot+WebSocket实现实时获取系统数据
    SpringBoot+WebSocket实现实时获取系统数据引入maven依赖<dependencies><dependency><groupId>org.springframework.boot</groupId>......