spring入门第一讲 spring的优势 Spring的体系结构 Spring中的两大核心 IOC AOP bean的实例化 无参构造+setter方法 有惨构造 静态工厂 实例化工

Spring概述

Spring是一个轻量级的框架,主要有**IOC(控制反转 )和AOP(面向切面)**两大核心内容。简化了开发,降低了开发的复杂度,同时可以整合其他的优秀的第三方框架或者类库,目前在大多数公司中都比较流行。

spring的优势

  1. 降低了开发的复杂度
  2. 整合目前流行的优秀的第三方的框架或类库
  3. 整合Junit进行单元测试

Spring的体系结构

在这里插入图片描述

Spring中的两大核心

IOC
控制反转IOC:将对象的创建和管理交给Spring框架处理
依赖注入DI:在程序运行期间,动态的将值进行注入
IOC案例
步骤:
1. 引入Spring所需要的jar包 beans context core spel(Exepression) +jcl
2. 创建实体类及dao层
3. 创建applicationContext.xml文件配置
4. 读取容器创建实例对象
在这里插入图片描述

<bean id="userDao" class="cn.yunhe.dao.impl.UserDaoImpl"></bean>
/*UserDaoImpl userDao = new UserDaoImpl();
userDao.saveUser();
userDao.delUser();*/

//读取配置文件 BeanFactory
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取实体类对象
IUserDao userDao = ac.getBean("userDao", UserDaoImpl.class);
userDao.saveUser();
userDao.delUser();

bean的实例化

1.无参构造+setter方法

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

   <bean id="userDao" class="cn.yunhe.dao.impl.UserDaoImpl"></bean>
   
   <!-- 
   	property:属性
   		name:对应bean中的属性名
   		ref:引用
   	通过无参构造器+setter方法进行值的注入
    -->
   <bean id="userService" class="cn.yunhe.service.impl.UserServiceImpl">
   	<property name="userDao" ref="userDao"></property>
   </bean>
</beans>
IUserDao userDao;

public UserServiceImpl(){}

public void setUserDao(IUserDao userDao){
    this.userDao = userDao;
}

2.有参构造

<!-- 有参构造进行值的注入
    constructor-arg:构造器的参数值
    -->
<bean id="userService2" class="cn.yunhe.service.impl.UserServiceImpl">
    <constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

<!-- 
    有参构造
    constructor-arg:构造参数设置
     name:对应构造器中的参数名
     value:对应参数的值
     index:对应构造器中参数的位置(下标)
     type:指定参数的类型
    -->
<bean id="user" class="cn.yunhe.beans.User">
    <!-- <constructor-arg name="age" value="12"></constructor-arg>
    <constructor-arg name="name" value="小张"></constructor-arg> -->
    <constructor-arg index="0" value="13" ></constructor-arg>
    <constructor-arg index="1" value="小代" ></constructor-arg>
</bean>

3.静态工厂

<!-- 
   	静态工厂
   	factory-method:要指定的静态方法
    -->
<bean id="user2" class="cn.yunhe.factory.StaticFactory" factory-method="getUser"></bean>
public class StaticFactory {

	public static User getUser(){
		return new User(15,"哈哈");
	}
}

4.实例化工厂

<!-- 
   	动态注入
    -->
   <bean id="dynamicFactory" class="cn.yunhe.factory.DynamicFactory"></bean>
   <!-- factory-bean:指定通过哪个工厂进行对象的创建 -->
   <bean id="user3" factory-bean="dynamicFactory" factory-method="getUser"></bean>
public class DynamicFactory {

	public User getUser(){
		return new User(16,"嘿嘿");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值