spring-IOC

spring-IOC,第1张

spring-IOC 1、Spring——第一天
  • spring 是一个开源的免费空间
  • spring是一个轻量级、非入侵式的框架
  • 控制翻转(IOC)、面向切面编程(AOP)
  • 支持事务的处理,对框架的整合

spring是一个轻量级的控制翻转和面向切面编程的框架

1.2 原来方式
  • UserDao接口–UserDaoImpl实现类
  • UserService业务接口-UserServicempl业务实现类
  • 用户实际调用的是service层,service层调用dao层

如果在dao层增加了新的方法,又想在service调用该方法,则需在service层改变代码–新建实现类

因为你在代码里面写死了,新增加一个需求,就要改一个代码,牵一发动全身

private UserDao dao=new UserDaoImpl();
private UserDao dao1=new UserDaoMySqlImpl();
public void getUser() {
    dao.getUser();
    dao1.getUser();
}
1.3spring方式

利用set进行动态的实现注入

private UserDao dao;
public void setDao(UserDao dao) {
    this.dao = dao;
}
  • 之前,所有的东西都是由程序去进行控制创建

  • 使用set注入后,程序不在有主动性,而是被动的接收对象,把主动权交给了调用者

    **我们不需要再管理对象的创建,系统的耦合性降低,可以专注于在业务的实现上–这是IOC的原型

异常:class path resource [beans.xml] cannot be opened because it does not exist

路径错误 换相对路径即可 来自源根的路径

**我们不需要再在程序中更改,要实现不同的 *** 作,只需要在xml配置文件修改 **

IOC:对象由Spring创建,管理,装配!

  • 反转:程序本身不创建对象,而变成被动的接收对象
  • 控制:之前是程序控制创建对象,现在用spring,由spring控制
  • 依赖注入:利用set方法进行注入的(对象,成员变量)



    
    
    
        
    

测试:

@Test
public void test1(){
    ApplicationContext Context= new ClassPathXmlApplicationContext("IOC\com\beans.xml");
    UserServiceImpl userServiceImpl = (UserServiceImpl) Context.getBean("UserServiceImpl");
    userServiceImpl.getUser();
}
1.4 IOC创建对象方式
  • 使用无参构造方法创建对象——默认
  • 使用有参构造方法创建对象——注入属性
   

        
        
        
    

    

在配置文件加载时候,spring容器管理的对象就已经初始化了

spring会创建所有的对象(默认调用无参构造方法)

1.5 依赖注入
  • 构造器注入

    1.4

  • set方式注入

  1. set注入要求Bean提供一个默认的构造函数,并为需要注入的属性提供对应的Setter方法。

  2. Spring先调用Bean的默认构造函数实例化Bean对象,然后通过反射的方式调用Setter方法注入属性值。

  3. 假设Bean显示定义了一个带参的构造函数,则需要同时提供一个默认无参的构造函数,否则使用属性注入时将抛出异常。


    
    
    
    
    
    
        
            围城
            白夜行
        
    
    
    
        
            敲代码
            睡觉
        
    
    
    
        
            
            
        
    
    
    
        
            王者农药
            英雄联盟
        
    
    
    
    
    
        
            0001
            0001
        
    
 



private String name;
private Address address;//引用类型
private String[] books;//数组
private List hobbys;
private Map card;
private Set games;
private Properties info;
private String wife;

@Override
public String toString() {
    return "Students{" +
            "name='" + name + ''' +
            ", address=" + address.toString() +
            ", books=" + Arrays.toString(books) +
            ", hobbys=" + hobbys +
            ", card=" + card +
            ", games=" + games +
            ", info=" + info +
            ", wife='" + wife + ''' +
            '}';
}
@Test
public void test2(){
    ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
    Students student = (Students) context.getBean("student");
    System.out.println(student.toString());
    
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5435655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存