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

学习记录一 记录Spring框架学习和力扣打卡

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

学习记录一 记录Spring框架学习和力扣打卡

2022.6.23

基本知识学习

最近在学习Spring框架,现在在学习依赖这一部分,学习这里的时候主要讲的是等待框架将持久层的内容移入业务层,这样我们在使用的时候就只用调用业务层就可以了!

那么在学习这里的时候网上课程老师的讲解案例如下:

创建一个UserDao接口,一个UserService接口(前者是持久层,后者是业务层)

UserDaoImpl继承UserDao接口并重写UserDao接口中的save方法

UserServiceImpl继承UserService接口并重写其中的save方法

那么怎么实现将持久层的数据封装在业务层里面,具体过程可以见下面的图

这里使用的是构造的方式

详细代码如下:

1. UserDao接口

Interface UserDao{
    public void save(){};
}

2. UserService接口

Interface UserService{
    public void save(){};
}

3. UserDaoImpl类

public class UserDaoImpl implements UserDao{
    
    private String username; //username 变量
    
    private int age; //age变量

    //设置 username 的值
    public void setUsername(String username) {
        this.username = username;
    }

    //set方法设置 age 的值
    public void setAge(int age) {
        this.age = age;
    }

    public void setUsername(String username, int age){
        this.username=username;
        this.age=age;
    }

    public UserDaoImpl() {
        System.out.println("UserImpl创建....");
    }

    @Override
    
    public void save() {
        System.out.println(username+"======"+age);
        System.out.println("save running.....");
    }

}

4. UserServiceImpl类

public class UserServiceImpl implements UserService {
    private UserDao userDao;


//设置实例的时候的两种方法,set和使用有参构造!

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    public UserServiceImpl() {

    }

    

    public void save() {
        userDao.save();
        System.out.println("running.....");

    }
}

5. applicationContext.xml文件




    



  

    
        
        
    

   
    

    
        
    

6. UserControll类---对UserService的实现

public class UserControll {
    public static void main(String[] args) {
        ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService= (UserService) app.getBean("userService");//注意名字一定要写对
        userService.save();


    }
}

使用上面就可以成功的实现将持久层的数据封装到业务层里面,但是如果使用下面的代码就会出错,这个也是我这篇文章中我自己重点想要记录的!

       // 如果是下面的代码是不行的
       
     //   会出现空指针异常,因为userDao是配置在Spring容器中的,但是你这里新创建的对象是调用不了容器里面的东西的!

 关于上面的数据为什么会出现空指针异常,我们创建了UserServiceImpl类的对象,然后我们使用userService这个对象调用的时候,从“4. UserServiceImpl类” 中我们可看到就会调用userDao.save();这里存在一个问题就是我们自己创建对象的时候是没有创建userDao对象的,没有给他赋值就会导致他是空的,所以会出现空指针异常;

换种方式描述,我们来分析使用Spring容器的时候的过程:

具体的查找过程就像上面那样,那么就可以正常找到userDao的值,但是如果我们自己创建的话就会出现userDao为空,那么空再指向其他的方法或者属性就会出现空指针异常的情况!

 好了,晚点再记录

=========================================================================继续记录了

使用set注入的过程还可以使用下面的方法 ----- p标签

首先找到命名空间 (application.context)

然后就可以添加的方式进行P标签的添加实现set的注入

力扣打卡

今天打卡的力扣是求回文字

对于回文字我想到了两种解法

解法一:通过比较第一个与最后一个,第二个与倒数第二个这样的方式来进行

解法二:通过将数字进行反转然后再与之前的数字进行比较,相同就证明是回文字

class Solution {
    public boolean isPalindrome(int x) {
    //解法一:

    //基本思路,可以先获取输入的字符串的长度,然后需要是回文数的话就是(假设长度为n),1对应n--2对应n-1....
    //我们需要首先将整型转换为字符型,然后通过charAt来读取数据并比较!使用等号比较就可以,使用equals比较的就是地址了
        String num=Integer.toString(x); 
        int xLen=num.length();
        
        for(int i=0;i 

=========================================================================

今天就记录到这里,明天继续!

每天都要开心哈,日常分享好看的照片再加上每日英文分享

Enjoy silence and nature surroundings and heal yourself through menditation.

<享受宁静和自然环境,通过沉思来治愈自己>

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

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

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