spring入门学习粗解(一)

本文详细介绍Spring框架的概念、发展历程及优势,包括其轻量级、全栈特性,以及如何解决Java分层代码量问题。文章还提供了Spring框架的快速入门指南,涵盖开发步骤、依赖包坐标、核心配置文件创建、Bean实例配置与获取等关键信息。
摘要由CSDN通过智能技术生成

1. spring概念

​ spring是一个轻量级、全栈的开源框架,它的问世解决了Java的各个分层的代码量,它还能方便的和其他的框架一起整合使用。总而言之,这是一款优秀的框架,几乎所有的Java项目都用到spring框架。

2. spring的发展历史

​ spring的前身是EJB,它和spring不同,EJB是一款重量级的框架,而且侵入性极强。而spring就是为了解决EJB的这些缺点才出现在世人眼中的。

​ spring之父是Rod Johnson,spring并不是他研发出来的,但spring的许多思想是Rod Johnson这个人最先提出来的。

3. spring的优势

方便解耦,简化开发

AOP编程的支持

声明式事务的支持

方便程序的测试

4. spring快速入门

4.1 spring入门程序开发步骤

(1). 导入spring开发的基本包坐标

(2). 编写后面需要new的接口和实现类

(3). 创建spring的核心配置文件

(4). 在spring的核心配置文件中配置实例

(5). 使用spring的API获取实例

4.2 spring开发的基本包坐标

<-- 这个是spring的context坐标 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.3.RELEASE</version>
</dependency>

<-- 这个是junit的包坐标 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

4.3 编写Dao接口和实现类

public interface UserDao {
    public void save();
}

public class UserDaoImpl implements UserDao {
    private List<User> list;
    private Map<Integer,User> map;
    private Properties props;

    public void setList(List<User> list) {
        this.list = list;
    }

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

    public void setProps(Properties props) {
        this.props = props;
    }

    public void save() {
        System.out.println(list);
        System.out.println(map);
        System.out.println(props);
    }
}
//User实体类
public class User {
    private String name;
    private int age;

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

    public User() {
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4.4 创建spring的核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       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">
       
</beans>

4.5 在spring的核心配置文件中配置<bean>实例

<bean id="userDao" class="cn.liu.dao.impl.UserDaoImpl">
    <property name="list">
        <list>
            <ref bean="user1"></ref>
            <ref bean="user2"></ref>
        </list>
    </property>
    <property name="map">
        <map>
            <entry key="1" value-ref="user1"></entry>
            <entry key="2" value-ref="user2"></entry>
        </map>
    </property>
    <property name="props">
        <props>
            <prop key="China">Jielun Zhou</prop>
            <prop key="USA">Camila</prop>
            <prop key="Korea">J.Fla</prop>
        </props>
    </property>
    </bean>
    <!--set方法注入-->
<bean id="userService" class="cn.liu.service.impl.UserServiceImpl" p:user-ref="userDao">
    <!--ref里是引用bean的id-->
    <!--name里面是该bean类里面的成员变量的属性名-->
    <!--<property name="user" ref="userDao"></property>-->
</bean>

<bean id="user1" class="cn.liu.bean.User">
	<!--<property name="" ref=""></property>-->
	<constructor-arg name="name" value="Camila"></constructor-arg>
	<constructor-arg name="age" value="19"></constructor-arg>
</bean>
<bean id="user2" class="cn.liu.bean.User">
	<constructor-arg name="name" value="J.Fla"></constructor-arg>
	<constructor-arg name="age" value="25"></constructor-arg>
</bean>

4.6 使用spring的API获取<bean>实例

@Test
public void test1() {
	ApplicationContext app = new ClassPathXmlApplicationContext("application-context.xml");
    UserService userService = (UserService) app.getBean("userService");
    userService.save();
}

5. spring配置文件

5.1 Bean标签基本配置

​ bean标签的作用是通过包名+类名全路径来加载类进内存,默认情况下它调用的是类的无参构造函数,如果该类没有无参构造方法,会报错。

​ id:bean标签的id是spring容器的唯一标识(唯一,不可重复)

​ class:bean的权限定名称,需要写类的包名+类名

5.2 Bean标签范围配置

取值范围说明
singleton默认值,单例的
prototype多例的
requestWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中
sessionWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中
global sessionWEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当于session

5.3 Bean实例化三种方式

(1). 使用无参构造方法返回Bean实例(默认情况是这种)

<bean id="userDao" class="cn.liu.dao.impl.UserDaoImpl">

(2). 工厂的静态方法返回bean实例

public class StaticFactory {
   public static UserDao createUserDao(){    
   	return new UserDaoImpl();
   }
}
<bean id="userDao" class="com.liu.factory.StaticFactory"
     factory-method="createUserDao" />

(3). 工厂的实例方法实例化

public class DynamicFactory {  
    public UserDao getUserDao(){        
    	return new UserDaoImpl();
    }
}
<bean id="factory" class="com.liu.factory.DynamicFactory"/>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>

1. spring概念

​ spring是一个轻量级、全栈的开源框架,它的问世解决了Java的各个分层的代码量,它还能方便的和其他的框架一起整合使用。总而言之,这是一款优秀的框架,几乎所有的Java项目都用到spring框架。

2. spring的发展历史

​ spring的前身是EJB,它和spring不同,EJB是一款重量级的框架,而且侵入性极强。而spring就是为了解决EJB的这些缺点才出现在世人眼中的。

​ spring之父是Rod Johnson,spring并不是他研发出来的,但spring的许多思想是Rod Johnson这个人最先提出来的。

3. spring的优势

方便解耦,简化开发

AOP编程的支持

声明式事务的支持

方便程序的测试

4. spring快速入门

4.1 spring入门程序开发步骤

(1). 导入spring开发的基本包坐标

(2). 编写后面需要new的接口和实现类

(3). 创建spring的核心配置文件

(4). 在spring的核心配置文件中配置实例

(5). 使用spring的API获取实例

4.2 spring开发的基本包坐标

<-- 这个是spring的context坐标 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.3.RELEASE</version>
</dependency>

<-- 这个是junit的包坐标 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

4.3 编写Dao接口和实现类

public interface UserDao {
    public void save();
}

public class UserDaoImpl implements UserDao {
    private List<User> list;
    private Map<Integer,User> map;
    private Properties props;

    public void setList(List<User> list) {
        this.list = list;
    }

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

    public void setProps(Properties props) {
        this.props = props;
    }

    public void save() {
        System.out.println(list);
        System.out.println(map);
        System.out.println(props);
    }
}
//User实体类
public class User {
    private String name;
    private int age;

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

    public User() {
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4.4 创建spring的核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       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">
       
</beans>

4.5 在spring的核心配置文件中配置<bean>实例

<bean id="userDao" class="cn.liu.dao.impl.UserDaoImpl">
    <property name="list">
        <list>
            <ref bean="user1"></ref>
            <ref bean="user2"></ref>
        </list>
    </property>
    <property name="map">
        <map>
            <entry key="1" value-ref="user1"></entry>
            <entry key="2" value-ref="user2"></entry>
        </map>
    </property>
    <property name="props">
        <props>
            <prop key="China">Jielun Zhou</prop>
            <prop key="USA">Camila</prop>
            <prop key="Korea">J.Fla</prop>
        </props>
    </property>
    </bean>
    <!--set方法注入-->
<bean id="userService" class="cn.liu.service.impl.UserServiceImpl" p:user-ref="userDao">
    <!--ref里是引用bean的id-->
    <!--name里面是该bean类里面的成员变量的属性名-->
    <!--<property name="user" ref="userDao"></property>-->
</bean>

<bean id="user1" class="cn.liu.bean.User">
	<!--<property name="" ref=""></property>-->
	<constructor-arg name="name" value="Camila"></constructor-arg>
	<constructor-arg name="age" value="19"></constructor-arg>
</bean>
<bean id="user2" class="cn.liu.bean.User">
	<constructor-arg name="name" value="J.Fla"></constructor-arg>
	<constructor-arg name="age" value="25"></constructor-arg>
</bean>

4.6 使用spring的API获取<bean>实例

@Test
public void test1() {
	ApplicationContext app = new ClassPathXmlApplicationContext("application-context.xml");
    UserService userService = (UserService) app.getBean("userService");
    userService.save();
}

5. spring配置文件

5.1 Bean标签基本配置

​ bean标签的作用是通过包名+类名全路径来加载类进内存,默认情况下它调用的是类的无参构造函数,如果该类没有无参构造方法,会报错。

​ id:bean标签的id是spring容器的唯一标识(唯一,不可重复)

​ class:bean的权限定名称,需要写类的包名+类名

5.2 Bean标签范围配置

取值范围说明
singleton默认值,单例的
prototype多例的
requestWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中
sessionWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中
global sessionWEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当于session

5.3 Bean实例化三种方式

(1). 使用无参构造方法返回Bean实例(默认情况是这种)

<bean id="userDao" class="cn.liu.dao.impl.UserDaoImpl">

(2). 工厂的静态方法返回bean实例

public class StaticFactory {
   public static UserDao createUserDao(){    
   	return new UserDaoImpl();
   }
}
<bean id="userDao" class="com.liu.factory.StaticFactory"
     factory-method="createUserDao" />

(3). 工厂的实例方法实例化

public class DynamicFactory {  
    public UserDao getUserDao(){        
    	return new UserDaoImpl();
    }
}
<bean id="factory" class="com.liu.factory.DynamicFactory"/>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值