栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

6、Spring之依赖注入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

6、Spring之依赖注入

6、依赖注入 6.1、构造器注入

前面已经说过了

6.2、Set方式注入【重点】
  • 依赖注入:Set注入
    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性,由容器来注入

【环境搭建】

1.复杂类型

public class Address {
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

2.真实测试对象

public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List hobbys;
    private Map card;
    private Set games;
    private String wife;
    private Properties info;

    //... set/get/toString
     
}

3.beans.xml




    
        
        
    

4.测试类:

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.getName());
        System.out.println(student.getAddress());
    }
}

完善注入信息




    
        
    
    
        
        
        
        
        
        
            
                红楼梦
                西游记
                水浒传
                三国演义
            
        
        
        
            
                听歌
                敲代码
                看电影
            
        

        
        
            
                
                
            
        

        
        
            
                LOL
                COC
                BOB
            
        

        
        
            
        

        
        
            
                123456
                
                gongyi
                123456
            
        
    



6.3、拓展方式注入

我们可以使用p命名空间和c命名空间进行注入

官方解释:

使用:




    
   

    
    



在父模块引入junit包依赖:


    junit
    junit
    4.12

测试:

@Test
public void test2() {
    ApplicationContext context = new ClassPathXmlApplicationContext("userbean.xml");
    User user = context.getBean("user2", User.class);
    System.out.println(user);

}

注意点:p命名空间和c命名空间不能直接使用,需要导入xml约束

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
6.4、bean的作用域

1.单例模式(Spring默认机制)


官网解释:

2.原型模式:每次从容器中get的时候,都会产生一个新对象


官网解释:

3.其余的request,session,application,这些只能在web开发中使用到

代码show

代码结构图:

1.新建模块:spring-04-di

2.新建pojo包及类

Address.java

public class Address {
    private String address;
    //set/get/toString
}

Student.java

public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List hobbys;
    private Map card;
    private Set games;
    private String wife;
    private Properties info;
    //set/get/toString
}

User.java

public class User {
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //set/get/toString
}

3.新建资源文件:

beans.xml




    
        
    
    
        
        
        
        
        
        
            
                红楼梦
                西游记
                水浒传
                三国演义
            
        
        
        
            
                听歌
                敲代码
                看电影
            
        

        
        
            
                
                
            
        

        
        
            
                LOL
                COC
                BOB
            
        

        
        
            
        

        
        
            
                123456
                
                gongyi
                123456
            
        
    



userbean.xml




    
   

    
    

    



4.新建测试类:

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.getName());
        System.out.println(student.getAddress());
        System.out.println(student);
        System.out.println(student.toString());
        
    }

    @Test
    public void test2() {
        ApplicationContext context = new ClassPathXmlApplicationContext("userbean.xml");
        User user = context.getBean("user2", User.class);
        System.out.println(user);
        User user2 = context.getBean("user2", User.class);
        System.out.println(user==user2);

        User user3 = context.getBean("user3", User.class);
        User user4 = context.getBean("user3", User.class);
        System.out.println(user3==user4);
        System.out.println(user3.hashCode());
        System.out.println(user4.hashCode());

    }


}

彩蛋

1.CPX输入自动提示:

2.依赖注入相关官方文档地址

3.idea同时看两个文件(左右对比)

4.查看properties子标签

5.技巧:

看spring等纯英文的官方文档时,英文看不懂时,可以先关注页面的代码【类似于当时看英文版的Thinking In Java的感觉】

6.判断两个对象是否相等,直接比较hashCode即可【直接相等比较,其实也是比较的hashCode】

7.本文章代码地址

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号