Spring简述一

1. Spring是什么

Spring简述二
Spring简述三——Spring和JDBCTemplate的整合&& Spring和Mybatis的整合使用
Spring:轻量级开源框架
核心:
IOC(inverse of Control):控制反转  
DI:依赖注入AOP(面向切面):给类添加功能而不修改源代码Spring对JavaEE提供了不同层的解决方案
展示层:servlet、SpringMVC
业务层:Spring IOC
数据层:JDBCTemplate、Mybatis

在这里插入图片描述

2. IOC

控制反转将对象的管理(创建,维护,销毁)交给Spring容器,使用方在使用对象时在Spring容器中直接获取对象(将对象的使用权交给使用方),使用方不用关注对象的创建过程。

IOC原理:

1、首先配置XML配置文件,将类配置在配置文件中
2、使用dom4j来解析XML配置文件
3、利用工厂方法来创建对象——通过反射技术创建对象
class.forname("com.tulun.bean.student");


class User{       
 public  void say(){     
        //业务逻辑     
           }
 }
           //配置文件中
 <bean id="user" class="com.bean.User">   
 class Facyory{      
   public static User  getBnean(String name){    
   //读取配置文件;
   通过dom4j解析xml文件 
 //获取name值对应的类路径
  Class class="name"->"com.bean.User" 
   //通过反射创建对象 
    User user=clss.newInstance; 
     return user;
       }
       }class Test{public void add(){User user=Facyory.getBean("user")user.talk;
       }
       }


IOC的实现:

基于配置bean的实例化:
1、无参构造函数实例化(如果此时给一个有参,会覆盖默认的无参,会报错)在使用无参构造时,要保持类中有无参构造函数,或使用默认的无参构造函数(隐形),即类中不能显性的使用有参
2、静态工厂方法实例化


public class StaticFactory { 
 public static Student  getBean() {
  return new Student();
   }
   }
   class属性:静态工厂类的全路径名    factory-method属性:方法名,静态工厂里获取student对象提供的方法
   <bean id="student1" class="comfactory7.StaticFactory" factory-method="getBean"/>


3、普通工厂方法实例化


public class CommonFactory {
 public Student getStudent() {
   return new Student(); 
    }
    }
    <bean id="comfactory" class="com.factory7.CommonFactory"/>
    <bean id="student2" factory-bean="comfactory" factory-method="getStudent"/>

基于注解bean的实例化使用步骤:
1、开启注解扫描
<context:component-scan base-package=“com.bean7”/>
2、添加注解@Component:添加在类上,表示将此类交给Spring


@Component(value = "student")
public class Student {
 private List<Integer> list; 
 public void setList(List <Integer> list) {
 this.list = list;
 }
 }


基于@Component注解衍生出三个注解:
@Controller    展示层
@Service 业务层
@Repository  持久层
ps.以上注解的作用一样,放什么层只是习惯

DI依赖注入(向对象赋值):

1、有参构造:


public class Student { 
 private String name; 
  //有参构造函数
   public Student(String name) {
    this.name = name; 
     }
     }

<!--依赖注入方式1:有参构造-->
<bean id="student3" class="com.bean7.Student" >  
  <!--    通过构造函数注入name属性    constructor-arg标签:通过构造注入属性    name属性:类中的属性名    value属性:指定该属性的值    -->  
    <constructor-arg name="name" value="zhansan">
     </constructor-arg></bean>


<constructor-arg>name=" " value=" "</constructor-arg>

2、set方法:


public class Student {
private String name;
public void setName(String name) {
this.name = name; 
}
}

    <!--依赖注入方式2:set方法-->  
      <bean id="student4" class="com.tulun.bean7.Student">    
    <!--通过set方法注入name属性-->      
      <property name="name"  value="李四"/> 
     </bean>


<property>name=" " value=" "</property>
注:如果value处要填充的是一个引用类型的对象而不是String(value里只能填String类型),就要把vlue关键字改成ref ref——引用类型;
list——list集合;
array——数组;
map——map集合(map里有<entry>标签);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值