Java Spring Part1

基本概念 

Java Spring Part1_第1张图片

Java Spring Part1_第2张图片

model/entity:实体层

service:业务逻辑层

dao:数据访问层

Java Spring Part1_第3张图片

 Java Spring Part1_第4张图片

Java Spring Part1_第5张图片

 普通new对象方法,与IOC方法的区别Java Spring Part1_第6张图片

Java Spring Part1_第7张图片 

实现方法

方法一

1.下载jar包后,选中External Library,点击File——Project Structure——Library,然后选择需要使用的jar包

Java Spring Part1_第8张图片

2.配置文件

Java Spring Part1_第9张图片

进行控制反转和依赖注入 

Java Spring Part1_第10张图片

方法二

查询maven仓库中,相应的依赖路径

Java Spring Part1_第11张图片

 

 Java Spring Part1_第12张图片

方法二

1.创建maven工程

2.pop.xml文件中添加依赖,context自动包含相应的其他必要依赖 

Java Spring Part1_第13张图片

 获得这些jar包

Java Spring Part1_第14张图片

 Java Spring Part1_第15张图片

 resource处新建一个xml文件,添加约束:

Java Spring Part1_第16张图片

 3.Spring Framework Documentation中,点入core页面,CTRL+F搜索关键字xmlns

复制第一段内容

Java Spring Part1_第17张图片

 粘贴至xml文件中,指定bean对象Java Spring Part1_第18张图片

 4.然后在表现层实现bean对象的获取

Java Spring Part1_第19张图片

ApplicationContext的实现方式 

Java Spring Part1_第20张图片

Java Spring Part1_第21张图片 用FlieSystem类获取核心容器对象时传递的参数需要是bean.xml文件的绝对路径(文件可以放在任意位置)

Spring对Bean的管理细节

1.创建Bean的三种方式

        方法一

Java Spring Part1_第22张图片

        方法二 

Java Spring Part1_第23张图片

        方法三

Java Spring Part1_第24张图片

如上,执行时默认构造方法可以实现对象的创建,但若在括号中传入参数,又不重写默认构造方法,则不能成功创建

2.Bean对象的作用范围

Java Spring Part1_第25张图片

3.Bean对象的生命周期

Java Spring Part1_第26张图片

spring中bean的依赖注入

依赖注入:
    Dependency Injection
    IOC的作用:
        降低程序间的耦合
    依赖关系的管理:
        交给spring来维护
    在当前类中需要用到其他类的对象,由spring为我们提供,只需要在配置文件中说明
    依赖关系的维护成为依赖注入
            能注入发数据有三类:
                基本类型和string
                其他bean类型(在配置文件中或者注释配置国的bean)
            注入的方式有三种
                1.使用构造函数提供
                2.使用set放大提供
                3.使用注解提供

方法一

bean.xml



 
        
         
         
    
    
    

AccountServiceImpl类

package com.itheima.service.impl;
import com.itheima.service.IAccountService;
import java.util.Date;
/**
 * 账户的业务层实现类
 */
public class AccountServiceImpl implements IAccountService {
    //如果是经常变化的数据,并不适用于注入的方法
   private String name;
   private Integer age;
   private Date birthday;
   public AccountServiceImpl(String name,Integer age,Date birthday){
       this.name = name;
       this.age = age;
       this.birthday = birthday;
   }

    public void  saveAccount(){
        System.out.println("service中的saveAccount方法执行了。。。"+name+","+age+","+birthday);
    }
}

client类

import com.itheima.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 模拟一个表现层,用于调用业务层
 */
public class Client {

    public static void main(String[] args) {
        //1.获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        //2.根据id获取Bean对象
        IAccountService as  = (IAccountService)ac.getBean("accountService");
        as.saveAccount();
    }
}

方法二


        
        
        
    
package com.itheima.service.impl;

import com.itheima.service.IAccountService;

import java.util.Date;

/**
 * 账户的业务层实现类
 */
public class AccountServiceImpl2 implements IAccountService {
    //如果是经常变化的数据,并不适用于注入的方法
   private String name;
   private Integer age;
   private Date birthday;

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

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public void  saveAccount(){
        System.out.println("service中的saveAccount方法执行了。。。"+name+","+age+","+birthday);
    }
}
package com.itheima.ui;

import com.itheima.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 模拟一个表现层,用于调用业务层
 */
public class Client {

    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        //1.获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        //2.根据id获取Bean对象
        IAccountService as2  = (IAccountService)ac.getBean("accountService2");
        as2.saveAccount();
    }
}

 复杂类型的注入

Java Spring Part1_第27张图片 


    
        
            
                AAA
                BBB
                CCC
            
        

        
            
                AAA
                BBB
                CCC
            
        

        
            
                AAA
                BBB
                CCC
            
        

        
            
                ccc
                ddd
            
        

        
            
                
                
                    BBB
                
            
        
    
package com.itheima.service.impl;

import com.itheima.service.IAccountService;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class AccountServiceImpl3 implements IAccountService {
    private String[] myStrs;
    private List myList;
    private Set mySet;
    private Map myMap;
    private Properties myProps;

    public AccountServiceImpl3() {
    }

    public void setMyStrs(String[] myStrs) {
        this.myStrs = myStrs;
    }

    public void setMyList(List myList) {
        this.myList = myList;
    }

    public void setMySet(Set mySet) {
        this.mySet = mySet;
    }

    public void setMyMap(Map myMap) {
        this.myMap = myMap;
    }

    public void setMyProps(Properties myProps) {
        this.myProps = myProps;
    }

    public void saveAccount() {
        System.out.println(Arrays.toString(this.myStrs));
        System.out.println(this.myList);
        System.out.println(this.mySet);
        System.out.println(this.myMap);
        System.out.println(this.myProps);
    }
}

 

 

你可能感兴趣的:(java,spring,maven)