资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

学习SSM的第一天

Java 更新时间: 发布时间: 计算机考试归档 最新发布

学习SSM的第一天

文章目录
  • 前言
  • 一、Spring的优势是什么?
  • 二、使用步骤
  • 三、Bean标签基本配置
  • 四、Bean生命周期配置
  • 五、Bean实例化三种方式
  • 六、Bean的依赖注入
  • 七、Bean的依赖注入方式
  • 八、Bean的依赖注入的数据类型

前言

Spring的IOC和DI

一、Spring的优势是什么?

1.方便解耦,简化开发
2.AOP编程的支持
3.声明式事务的支持
4.方便程序的测试
5.方便集成各种优秀框架
6.降低JavaEE API的使用难度

二、使用步骤

1.导入Spring开发的基本包坐标
代码如下(示例):

    
        
            org.springframework
            spring-context
            5.3.15
        
    

2.编写Dao接口和实现类
代码如下(示例):

public interface UserDao {
    public void save();
}
public class UserDaoimpl implements UserDao {
    @Override
    public void save() {
        System.out.println("zhangsan");
    }
}

3.创建Spring核心配置文件



		

4.在Spring配置文件中配置UserDaoImpl



		
		

5.使用Spring的API获得Bean实例

 public class UserDaoDemo {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}
三、Bean标签基本配置

默认情况下它调用的是类中的无参构造函数。
基本属性:
1.id:Bean的实例的唯一标识
2.class:Bean的完整路径
3.scope属性的取值:
singleton:默认值 单例的
Bean的实例化时机:spring核心文件被加载时
prototype:多例的
Bean的实例化时机:调用getBean()时

四、Bean生命周期配置

init-method:指定类中的初始化方法名称
destroy-method:指定类中的销毁方法名称

public void init() {
            System.out.println("初始化方法");
        }
        public void destroy() {
            System.out.println("销毁方法");
        }
       
五、Bean实例化三种方式

1.无参构造函数方法实例化
它会根据默认无参构造方法来创建对象,如果没有则创建失败


2.工厂静态方法实例化
工厂的静态方法返回Bean实例

public class StaticFactory {

    public static UserDao getUserDao() {
        return new UserDaoimpl();
    }
}

3.工厂实例方法实例化
工厂的非静态方法返回Bean实例

public class DynamicFactory {
    public UserDao getUserDao() {
        return new UserDaoimpl();
    }
}


六、Bean的依赖注入

1.创建UserService,UserService内部在调用UserDao的save方法

public interface UserService {
    public void save();
}
public class UserServiceimpl implements UserService {
    @Override
    public void save() {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}

2.将UserServiceImpl的创建权交给Spring


3.从Spring容器中获得UserService进行操作

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
 userService.save();
七、Bean的依赖注入方式

1.构造方法
①创建有参构造函数

public class UserServiceimpl implements UserService {
    private UserDao userDao;

    public UserServiceimpl(UserDao userDao) {
        this.userDao = userDao;
    }
        @Override
    public void save() {
        userDao.save();
    }
}

②配置Spring容器调用有参构造函数进行注入
constructor-arg当中的name是构造函数当中的参数名


 
        
    

2.set方法
①在UserServiceImpl中添加setUserDao方法

public class UserServiceimpl implements UserService {
    private UserDao userDao;
    public UserServiceimpl(UserDao userDao) {
        this.userDao = userDao;
    }
        @Override
    public void save() {

        userDao.save();
    }
}

②配置Spring容器调用set方法1进行注入
property当中的name是set后面的名字




p命名空间注入的本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中。
首先,需要引入P命名空间

xmlns:p="http://www.springframework.org/schema/p"

其次,修改注入方式


八、Bean的依赖注入的数据类型

以set方法注入。构造函数方法以后补充。也可参考前面
1.普通数据类型

public class UserDaoimpl implements UserDao {
  
    private String userName;
    private int age;
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public void setAge(int age) {
        this.age = age;
    }
        @Override
    public void save() {
        System.out.println(userName+"====="+age);
        System.out.println("zhangsan");
    }
 
}
    
        
        
    

2.引用数据类型

public class User {
    private String  name;
    private String addr;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                ", addr='" + addr + ''' +
                '}';
    }
}
    
        
        
    
    
        
        
    

3.集合数据类型
property当中的name都是该类型所属名字

public class UserDaoimpl implements UserDao {

    private List stringList;
    private Map userMap;
    private Properties properties;

    public void setStringList(List stringList) {
        this.stringList = stringList;
    }

    public void setUserMap(Map userMap) {
        this.userMap = userMap;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }
    @Override
    public void save() {
        System.out.println(stringList);
        System.out.println(userMap);
        System.out.println(properties);
        System.out.println("zhangsan");
    }
}
    
        
            
                aaa
                bbb
                ccc
            
        
        
            
                
                
            
        
        
            
                ppp1
                ppp2
                ppp3
            
        
    
        
        
        
    
    
        
        
    
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/821208.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【学习SSM的第一天】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2