Spring5学习笔记(二)

Docker在学了在学了
接上一篇

IOC注入方式其二:使用有参构造注入

Order类

public class Order {
    private String oname;

    private String address;

    public Order(String oname,String address){
        this.oname = oname;
        this.address = address;
    }
    public void orderTest(){
        System.out.println("订单名称:"+oname+" 订单地址:"+address);
    }
}

xml配置文件中需要加入标签

<bean id="order" class="com.day2.spring5.Order">
    <constructor-arg name="oname" value="电脑"></constructor-arg>
    <constructor-arg name="address" value="China"></constructor-arg>
</bean>

测试类

@Test
public void testOrder(){
    // 1 加载Spring配置文件
    ApplicationContext context =
            new ClassPathXmlApplicationContext("com/day2/spring5/bean1.xml");
    // 2 获取配置创建的对象
    Order order = context.getBean("order",Order.class);
    // 3 输出配置创建的对象
    System.out.println(order);
    order.orderTest();
}
/************************/
输出为:

com.day2.spring5.Order@569cfc36

订单名称:电脑 订单地址:China

一些其他属性

字面量
1、null值

<property name="bname">
  <null/>/* 直接用这个标签就好*/
</property>

2、包含特殊符号的属性

<property name="bname">
    <value><![CDATA[<<南京>>]]></value>
    /*![CDATA[包含特殊符号的值]*/
</property>

外部bean的注入

个人觉得这个最好用
UserService类

public class UserService {
    private UserDao userDao;
    private void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
    public  void add(){
        System.out.println("service......");
    }
}

UserDao

public class UserDao {
    public void update(){
        System.out.println("dao update......");
    }
}

xml配置文件

<bean id="userDao" class="com.day2.spring5.dao.UserDao"></bean>
<bean id="userService" class="com.day2.spring5.service.UserService">
    <!--
		注入UserDao对象
		name:类里面属性名称
		ref:创建UserDao对象bean标签的id值
    -->
    <property name="userDao" ref="userDao"></property>
</bean>

级联赋值

对关系的分析

  • 一对多:部门和员工
  • 在实体类之间的一对多关系
//部门类
public class Dept {
    private String dname;

    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getDeptName(){
        return this.dname;
    }
}

//员工类
public class Emp {
    private String ename;
    private String gender;
    private Dept dept;

    public void setEname(String ename) {
        this.ename = ename;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
    public void test(){
        System.out.println("员工名称:"+ename+" 性别:"+gender+" 部门名称:"+dept.getDeptName());
    }
}

//xml配置文件
<bean id="emp" class="com.qy.spring5.DeptTest.Emp">
    <property name="ename" value="lucy"></property>
    <property name="gender" value="女"></property>
    <property name="dept">
        <bean id="dep" class="com.day2.spring5.DeptTest.Dept">
            <property name="dname" value="安保部"></property>
        </bean>
    </property>
</bean>

//测试类
@Test
public void testOrder(){
    // 1 加载Spring配置文件
    ApplicationContext context =
            new ClassPathXmlApplicationContext("com/day2/spring5/bean2.xml");
    // 2 获取配置创建的对象
    Emp emp = context.getBean("emp", Emp.class);
    // 3 输出配置创建的对象
    System.out.println(emp);
    emp.test();
}

//输出结果
com.qy.spring5.DeptTest.Emp@66d1af89

注入属性:级联赋值

<!--级联赋值-->
<bean id="emp" class="com.qy.spring5.DeptTest.Emp">
    <!--设置两个普通属性-->
    <property name="ename" value="lucy"></property>
    <property name="gender" value="女"></property>
    <!--级联赋值-->
    <property name="dept" ref="dept"></property>
    <!--dept.name用于设置dept的name,需要给Dept类上添加Dept的get方法-->
    <property name="dept.name" value="技术部"></property>//此处必须实现get方法
</bean>
<bean id="dept" class="com.qy.spring5.DeptTest.Dept">
    <property name="dname" value="财务部"></property>
</bean>

今天暂且到这,上班不可以摸鱼...

原文地址:https://www.cnblogs.com/Emuaer/p/15088968.html