spring学习笔记一(基于xml)

一、首个spring应用

**文字描述:**
1、创建maven项目
2、pom.xml中指定spring-context坐标
3、创建具体接口及其实现类
4、创建spring核心配置文件(常以applicationContext命名),并配置接口的实现类,如:
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/>,id随意取名,意为指定该类;class指定该类的全限定类名
5、在所使用的类中通过spring相关方法获取bean实例(即userDao的实现类对象)

**代码描述:**
1、在pom.xml文件中
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.9.RELEASE</version>
        </dependency>
</dependencies>
2、创建接口及其实现类
public interface UserDao {  
    public void save();
}

public class UserDaoImpl implements UserDao {  
        @Override  
        public void save() {
        	System.out.println("UserDao save method running....");
	}
}
3、创建配置文件并配置,在applicationContext.xml文件中:
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/>
4、在所使用的类中通过spring相关方法获取bean实例
public class UserDaoTest {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) app.getBean("userDao");
        userDao.save();
    }
}

二、部分配置文件

**代码解释:**
其中,
id属性指定类的唯一名称,任意取名;
class属性指定全限定类名(全包名);
scope属性默认为singleton,单实例(即创建的多个实例始终指向同一个对象),prototype为多实例(即创建的多个实例彼此所指对象不同);
init-method属性为指定初始化方法,spring容器创建完成后开始初始化;
destroy-method属性为指定销毁方法,spring容器被销毁时执行此方法;
factory-method属性指定工厂类中获取实例的方法,此时class属性应设为工厂类的全限定类名

**关于scope属性:**
scope为默认值singleton时,创建单个实例对象;对象创建时机:加载配置文件完成即创建,随spring容器销毁而销毁
scope为默认值prototype时,创建多个实例对象;对象创建时机:getBean()方法被调用时创建,对象长时间不用将被Java垃圾回收器回收
	<!--对象作用域为多实例-->
    <!--<bean id="userDao" class="com.dao.impl.UserDaoImpl" scope="prototype"/>-->
    
	<!--通过无参构造方法进行Bean的实例化-->
    <!--<bean id="userDao" class="com.dao.impl.UserDaoImpl" init-method="init" destroy-			method="destroy"/>-->

    <!--通过工厂静态方法进行Bean的实例化-->
    <!--<bean id="userDao" class="com.factory.StaticFactory" factory-method="getUserDao"/>-->

    <!--通过工厂实例方法进行Bean的实例化-->
    <!--<bean id="factory" class="com.factory.DynamicFactory"/>
    <bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>-->

三、依赖注入

**概念:**简单来说,就是为了解耦与方便维护和开发,让数据的绑定在spring中完成,使用时直接通过spring获取。
**代码描述:**
<bean id="user1" class="com.domain.User">
        <property name="name" value="李四"/>
        <property name="age" value="24"/>
    </bean>
    <bean id="user2" class="com.domain.User">
        <property name="name" value="王五"/>
        <property name="age" value="25"/>
    </bean>
    
    <!--依赖注入4,其它数据类型注入-->
    <bean id="userService" class="com.service.impl.UserServiceImpl">
        <constructor-arg name="userDao" ref="userDao"/>
        <!--list集合类型-->
        <property name="list">
            <list>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </list>
        </property>
        <!--map类型-->
        <property name="userMap">
            <map>
                <entry key="user1" value-ref="user1"/>
                <entry key="user2" value-ref="user2"/>
            </map>
        </property>
        <!--properties类型-->
        <property name="properties">
            <props>
                <prop key="pro1">pro1</prop>
                <prop key="pro2">pro2</prop>
                <prop key="pro3">pro3</prop>
            </props>
        </property>
    </bean>
获取绑定数据:
public class UserControllerTest {
    public static void main(String[] args) {
        /*//不使用spring时调用save方法
        UserServiceImpl userService = new UserServiceImpl();
        userService.save();*/

        //使用spring调用save方法
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //当全限定类重复多次使用时,可根据id值的不同而使用getBean(id值)方法
        //UserService userService = (UserService) app.getBean("userService");
        //当全限定类仅单次使用时,可直接使用类字节码作参数使用,即getBean(类字节码文件);
        UserService userService = app.getBean(UserService.class);
        userService.save();
    }
}
运行结果:

在这里插入图片描述

四、其它补充

多配置文件时,可通过配置分文件的导入:
<!--配置文件导入-->
    <import resource="applicationContext-service.xml"/>
    <import resource="applicationContext-dao.xml"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值