spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象

简介: spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象

实现要求:


在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象,模拟实现用户的增删改操作,并将结果输出到控制台。要求如下:


set注入方式实现对象的依赖关系。

增删改操作需要实现、提交和关闭操作。

事务的开启


26.png


实现思路:


在com.mhys.pojo包下,创建User类。 在com.mhys.dao包下,创建UserDao类。


package com.mhys.bean;
public class Users {
  private String userId;
  private String userName;
  private String password;
  private int age;
  private String address;
  private String flag;
  public Users() {
    super();
  }
  public Users(String userId, String userName, String password, int age, String address, String flag) {
    super();
    this.userId = userId;
    this.userName = userName;
    this.password = password;
    this.age = age;
    this.address = address;
    this.flag = flag;
  }
  @Override
  public String toString() {
    return "Users [userId=" + userId + ", userName=" + userName + ", password=" + password + ", age=" + age
        + ", address=" + address + ", flag=" + flag + "]";
  }
  public String getUserId() {
    return userId;
  }
  public void setUserId(String userId) {
    this.userId = userId;
  }
  public String getUserName() {
    return userName;
  }
  public void setUserName(String userName) {
    this.userName = userName;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getAddress() {
    return address;
  }
  public void setAddress(String address) {
    this.address = address;
  }
  public String getFlag() {
    return flag;
  }
  public void setFlag(String flag) {
    this.flag = flag;
  }
}


package com.mhys.Dao;
import com.mhys.bean.Users;
public class UsersDao {
  public Users getUserById(String userId){
    Users users = new Users("130006", "杨明金", "123456", 20, "云南", "1");
    return users;
  }
  public Boolean insertUser(Users users){
    System.out.println("插入数据:"+users.getUserId()+","+users.getUserName()
        +","+users.getPassword()+","+users.getAge()+","
        +users.getAddress()+","+users.getFlag());
    return true;
  }
  public Boolean updataUserByid(Users users){
    System.out.println("修改用户编号:"+users.getUserId()+"的密码为:"+users.getPassword());
    return true;
  }
  public Boolean deleteUserByid(Users users){
    System.out.println("删除用户编号:"+users.getUserId()+"的信息");
    return true;
  }
}


在com.mhys.service包下,创建UserService类。


package com.mhys.Dao;
import com.mhys.bean.Users;
public class UsersService {
  private UsersDao usersDao;
  public Users getUserInfoById(String userId){
    Users users = usersDao.getUserById(userId);
    return users;
  }
  public Boolean insertUserInfo(Users users) {
    System.out.println("开启事务");
    usersDao.insertUser(users);
    System.out.println("提交事务");
    System.out.println("关闭事务");
    return true;
  }
  public Boolean updataInfo(Users users) {
    System.out.println("开启事务");
    usersDao.updataUserByid(users);
    System.out.println("提交事务");
    System.out.println("关闭事务");
    return true;
  }
  public Boolean deleteInfo(Users users) {
    System.out.println("开启事务");
    usersDao.deleteUserByid(users);
    System.out.println("提交事务");
    System.out.println("关闭事务");
    return true;
  }
  public UsersDao getUsersDao() {
    return usersDao;
  }
  public void setUsersDao(UsersDao usersDao) {
    this.usersDao = usersDao;
  }
}


applicationContext.xml配置文件中,注册userDao类和userService类到容器。


  <bean id="users" class="com.mhys.bean.Users"></bean>
  <bean id="usersDao" class="com.mhys.Dao.UsersDao"></bean>
  <bean id="usersService" class="com.mhys.Dao.UsersService">
    <property name="usersDao" ref="usersDao"></property>
  </bean>


在com.mhys.demo.test包下,创建测试类。


package com.mhys.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mhys.Dao.UsersService;
import com.mhys.bean.Users;
public class T1_4_3Test {
  public static void main(String[] args) {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UsersService usersService = (UsersService) context.getBean("usersService");
    //查询测试
    Users users1 = usersService.getUserInfoById("23");
    System.out.println(users1);
    //创建测试对象
    Users users2 = new Users("2487", "杨明金", "123456", 20, "云南省", "1");
    //添加测试
    Boolean flag1 = usersService.insertUserInfo(users2);
    if (flag1) {
      System.out.println("插入成功!");
    }
    //修改测试
    users1.setPassword("1111");
    Boolean flag2 = usersService.updataInfo(users2);
    if (flag2) {
      System.out.println("修改成功!");
    }
    //删除测试
    Boolean flag3 = usersService.deleteInfo(users2);
    if (flag3) {
      System.out.println("删除成功!");
    }
  }
}



相关文章
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
1362 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
1078 3
|
Java 测试技术 程序员
为什么Spring不推荐@Autowired用于字段注入?
作为Java程序员,Spring框架在日常开发中使用频繁,其依赖注入机制带来了极大的便利。然而,尽管@Autowired注解简化了依赖注入,Spring官方却不推荐在字段上使用它。本文将探讨字段注入的现状及其存在的问题,如难以进行单元测试、违反单一职责原则及易引发NPE等,并介绍为何Spring推荐构造器注入,包括增强代码可读性和维护性、方便单元测试以及避免NPE等问题。通过示例代码展示如何将字段注入重构为构造器注入,提高代码质量。
714 1
|
IDE Ubuntu Java
在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境的指南。
完成以上步骤后,您将在Ubuntu 18.04系统上成功安装并配置了Eclipse IDE,它将与JDK 8兼容,可以开始进行Java开发工作。如果遇到任何问题,请确保每一步骤都正确执行,并检查是否所有路径都与您的具体情况相匹配。
560 11
|
Java 应用服务中间件 Maven
第01课:Spring Boot开发环境搭建和项目启动
第01课:Spring Boot开发环境搭建和项目启动
3446 0
|
Java Spring
一键注入 Spring 成员变量,顺序编程
介绍了一款针对Spring框架开发的插件,旨在解决开发中频繁滚动查找成员变量注入位置的问题。通过一键操作(如Ctrl+1),该插件可自动在类顶部添加`@Autowired`注解及其成员变量声明,同时保持光标位置不变,有效提升开发效率和代码编写流畅度。适用于IntelliJ IDEA 2023及以上版本。
328 2
一键注入 Spring 成员变量,顺序编程
|
缓存 Java Spring
源码解读:Spring如何解决构造器注入的循环依赖?
本文详细探讨了Spring框架中的循环依赖问题,包括构造器注入和字段注入两种情况,并重点分析了构造器注入循环依赖的解决方案。文章通过具体示例展示了循环依赖的错误信息及常见场景,提出了三种解决方法:重构代码、使用字段依赖注入以及使用`@Lazy`注解。其中,`@Lazy`注解通过延迟初始化和动态代理机制有效解决了循环依赖问题。作者建议优先使用`@Lazy`注解,并提供了详细的源码解析和调试截图,帮助读者深入理解其实现机制。
1155 1
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
282 0
|
安全 Java 开发者
开发者必看!@Resource与private final的较量,Spring Boot注入技巧大揭秘,你不可不知的细节!
【8月更文挑战第29天】Spring Boot作为热门Java框架,其依赖注入机制备受关注。本文通过对比@Resource(JSR-250规范)和@Autowired(Spring特有),并结合private final声明的字段注入,详细探讨了两者的区别与应用场景。通过示例代码展示了@Resource按名称注入及@Autowired按类型注入的特点,并分析了它们在注入时机、依赖性、线程安全性和单一职责原则方面的差异,帮助开发者根据具体需求选择最合适的注入策略。
1030 0
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1462 0

推荐镜像

更多