spring配置和依赖注入

spring的重点配置

  1. 标签
    1. id:容器bean实例的唯一标识,不允许重复
    2. class:实例化bean的全类名
    3. scope:作用范围,常用singleton(单个)和prototype(多个)
    4. :属性注入
      1. name:属性名称
      2. value: 普通属性值
      3. ref:引用属性值
      4. 一些集合标签
  2. 属性注入方式
    1. set方法,通过set属性
    2. 构造器 标签
  3. import标签导入其他spring配置文件

dao层,接口定义一下

package com.code_g.dao.Impl;

import com.code_g.dao.UserDao;
import com.code_g.domain.User;

import java.util.List;
import java.util.Map;
import java.util.Properties;

public class UserDaoImpl implements UserDao {
//    private String name;
//    private int age;

//    public UserDaoImpl(String name, int age) {
//        this.name = name;
//        this.age = age;
//    }

    private List<String> strList;
    private Map<String, User> map;
    private Properties properties;

    public List<String> getStrList() {
        return strList;
    }

    public void setStrList(List<String> strList) {
        this.strList = strList;
    }

    public Map<String, User> getMap() {
        return map;
    }

    public void setMap(Map<String, User> map) {
        this.map = map;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    public UserDaoImpl() {
    }

//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public void setAge(int age) {
//        this.age = age;
//    }

    @Override
    public void save() {
//        System.out.println(name + age);
        System.out.println(strList);
        System.out.println(map);
        System.out.println(properties);
        System.out.println("save message...");
    }

    public void init(){
        System.out.println("初始化...");
    }

    public void destroy(){
        System.out.println("销毁...");
    }
}


service,接口定义一下

package com.code_g.service.Impl;

import com.code_g.dao.UserDao;
import com.code_g.service.UserService;

public class UserServiceImpl implements UserService {
    private UserDao dao;

    public void setDao(UserDao dao) {
        this.dao = dao;
    }

    @Override
    public void save() {
        dao.save();
    }
}


静态工厂

package com.code_g.factory;

import com.code_g.dao.Impl.UserDaoImpl;
import com.code_g.dao.UserDao;

public class StaticFactory {

    public static UserDao getUserDaoImpl(){
        return new UserDaoImpl();
    }
}

实例化工厂

package com.code_g.factory;

import com.code_g.dao.Impl.UserDaoImpl;
import com.code_g.dao.UserDao;

public class DynamicFactory {
    public UserDao getUserDaoImpl(){
        return new UserDaoImpl();
    }
}


配置文件

<?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">

<!--    配置init初始化方法和destory销毁方法-->
<!--    无参构造的方法-->
<!--    <bean id="userDao" class="com.code_g.dao.Impl.UserDaoImpl" scope="prototype" init-method="init" destroy-method="destroy"/>-->

<!--    使用静态工厂-->
<!--    <bean id="userDao" class="com.code_g.factory.StaticFactory" factory-method="getUserDaoImpl"/>-->

<!--    使用实例化工厂-->
<!--    <bean id="factory" class="com.code_g.factory.DynamicFactory"/>-->
<!--    <bean id="userDao" factory-bean="factory" factory-method="getUserDaoImpl"/>-->

<!--    引用依赖注入-->
<!--    <bean id="userDao" class="com.code_g.dao.Impl.UserDaoImpl"/>-->
<!--    <bean id="userService" class="com.code_g.service.Impl.UserServiceImpl">-->
<!--        <property name="dao" ref="userDao"/>-->
<!--    </bean>-->

<!--    普通数据注入-->
<!--    <bean id="userDao" class="com.code_g.dao.Impl.UserDaoImpl">-->
<!--        set方法注入-->
<!--        <property name="name" value="zhangsan"/>-->
<!--        <property name="age" value="18"/>-->
<!--        构造方法注入-->
<!--        <constructor-arg name="name" value="zhangsan"/>-->
<!--        <constructor-arg name="age" value="18"/>-->
<!--    </bean>-->

<!--    集合注入-->
    <bean id="userDao" class="com.code_g.dao.Impl.UserDaoImpl">
<!--        list-->
        <property name="strList">
            <list>
                <value>123456</value>
                <value>abcdef</value>
                <value>poper</value>
            </list>
        </property>

<!--        map-->
        <property name="map">
            <map>
                <entry key="user1" value-ref="user1"/>
                <entry key="user2" value-ref="user2"/>
            </map>
        </property>

<!--        properties-->
        <property name="properties">
            <props>
                <prop key="p1">111</prop>
                <prop key="p2">222</prop>
                <prop key="p3">333</prop>
            </props>
        </property>
    </bean>
    <bean id="user1" class="com.code_g.domain.User">
        <property name="name" value="code_g"/>
        <property name="age" value="18"/>
    </bean>
    <bean id="user2" class="com.code_g.domain.User">
        <property name="name" value="chris"/>
        <property name="age" value="22"/>
    </bean>

<!--    导入其他spring配置文件-->
    <import resource="applicationContext-service.xml"/>
    <import resource="applicationContext-dao.xml"/>
</beans>

自行书写测试方法

posted @ 2021-05-19 10:07  code-G  阅读(53)  评论(0编辑  收藏  举报