首页 > 其他分享 >4_Spring_XML方式实现DI

4_Spring_XML方式实现DI

时间:2023-07-30 12:46:33浏览次数:57  
标签:XML username String DI 对象 Spring userid bean password

4_Spring_XML方式实现DI

spring中的Bean的管理:

Bean(汉译咖啡豆). 又称JAVABean.其实就是JAVA程序程序中的一个个对象,所以Bean的管理其实就是spring对于JAVA程序中的对象的管理

管理的内容是什么

1 对象的创建   IOC

IOC   叫做控制反转,就是Spring给我们创建对象,然后我们直接用,不用自己NEW,前面已经解释过

IOC处理的是对象如何创建的问题

2 属性的赋值   DI

DI    Dependency Injection,即“依赖注入” 就是创建属性时给对象属性赋值

对象功能的实现往往要依赖属性的值,那么给对象属性赋值就可以说成是依赖注入

由于对象属性不仅仅是基本数据类型,还可能是其他类,或者引用类型

那么依赖注入将会把更多的对象之间的关系整理到一起,可以行程一个庞大的依赖关系

DI处理的是对象的属性赋值和互相依赖的关系

spring给我们提供了两种关于bean的方式

1 基于XML方式的Bean管理

2 基于注解方式的Bean管理

创建新的模块并导入以下依赖

image
依赖

  1.      <dependency>
    
  2.          <groupId>org.springframework</groupId>
    
  3.          <artifactId>spring-context</artifactId>
    
  4.          <version>5.3.5</version>
    
  5.      </dependency>
    
  6.      <dependency>
    
  7.          <groupId>junit</groupId>
    
  8.          <artifactId>junit</artifactId>
    
  9.          <version>4.13.1</version>
    
  10.         <scope>test</scope>
    
  11.     </dependency>
    

创建spring配置文件,一般spring的配置文件很多人约定俗称为application****.xml

image
准备一个要实例化的类

  1. public class User {
  2.  private Integer userid;
    
  3.  private String username;
    
  4.  private String password;
    
  5.  @Override
    
  6.  public String toString() {
    
  7.      return "User{" +
    
  8.              "userid=" + userid +
    
  9.              ", username='" + username + '\'' +
    
  10.             ", password='" + password + '\'' +
    
  11.             '}';
    
  12. }
    
  13. public User() {
    
  14.     System.out.println("noArgConstructor");
    
  15. }
    
  16. public User(Integer userid, String username, String password) {
    
  17.     System.out.println("allArgConstructor");
    
  18.     this.userid = userid;
    
  19.     this.username = username;
    
  20.     this.password = password;
    
  21. }
    
  22. public void setUserid(Integer userid) {
    
  23.     System.out.println("setUserid");
    
  24.     this.userid = userid;
    
  25. }
    
  26. public void setUsername(String username) {
    
  27.     System.out.println("setUsername");
    
  28.     this.username = username;
    
  29. }
    
  30. public void setPassword(String password) {
    
  31.     System.out.println("setpassword");
    
  32.     this.password = password;
    
  33. }
    
  34. }

IOC创建对象

通过无参构造方法构造对象

标签的常见属性

id    对象的id

class 类的全路径名

name 和id类似,一般不用

scope 控制对象单例多例和使用范围

singleton作用域(scope 默认值), Spring IOC容器中只会存在一个共享的bean实例

prototype作用域部署的bean,每一次获取都会产生一个新的bean实例,相当与一个new的操作

request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效

session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效

global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义

lazy-init 懒加载 调用getBean的时候再去实例化对象

DI给对象属性赋值

1 通过set方法给对象属性赋值

  1.  <bean id="user1" class="com.msb.bean.User">
    
  2.      <property name="userid" value="1"></property>
    
  3.      <property name="username" value="张三"></property>
    
  4.      <property name="password" value="abcdefg"></property>
    
  5.  </bean> 
    

2 通过有参构造给对象属性赋值

标签:XML,username,String,DI,对象,Spring,userid,bean,password
From: https://www.cnblogs.com/01way/p/17591271.html

相关文章

  • 9_Spring_JDK动态代理
    9_Spring_JDK动态代理代理模式是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。房产中介代替业主卖房静态代理静态代理中代理类与被代理类都需要实现同一个接口,这就说明我们的一个静态代理类只能代理一个类,并且还要事先......
  • 8_Spring_注解方式管理bean
    8_Spring_注解方式管理bean1注解方式创建对象IOC导入依赖aop@Component  放在类上,用于标记,告诉spring当前类需要由容器实例化bean并放入容器中该注解有三个子注解@Controller 用于实例化controller层bean@Service    用于实例化service层bean@Repositor......
  • 7_Spring_使用外部属性配置文件
    7_Spring_使用外部属性配置文件spring容器可以读取.properties属性配置文件,可以将文件中的信息注入给bean例如,引入Druid数据源,配置连接池信息1 导入Druid依赖和mysql-connector依赖<dependency><groupId>com.alibaba</groupId><artifa......
  • 13_Spring_AOPXML方式实现_了解
    13_Spring_AOPXML方式实现_了解1、创建两个类,增强类和被增强类,创建方法见之前的代码2、在spring配置文件中创建两个类对象 3、在spring配置文件中配置切入点<aop:config><!--切入点--><aop:pointcutid="pointCutAdd"expression="execution......
  • 12_Spring_AOP注解方式实现_掌握
    12_Spring_AOP注解方式实现_掌握AspectJ本身并不是spring框架中的组成部分,是一个独立的AOP框架,一般把AspectJ和Spring框架的AOP依赖一起使用,所以要导入一个独立的依赖实现的两种方式1基于注解方式实现(熟练)2基于XML配置方式(了解)准备工作1导入依赖<!-......
  • 11_Spring_AOP概念和原理
    11_Spring_AOP概念和原理AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现日志处理,权限控制,性能检测,事务控制等AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理为Dao层所有的......
  • 10_Spring_CGLIB动态代理
    10_Spring_CGLIB动态代理proxy动态代理面向接口1必须有接口和实现类2增强接口中定义的方法3只能读取接口中方法的上注解cglib动态代理模式面向父类packagecom.msb.testCglib;importorg.junit.Test;importorg.springframework.cglib.proxy.Enhancer;importorg.s......
  • 14_Spring_JDBCTemplate的使用
    14_Spring_JDBCTemplate的使用JdbcTemplate概述JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等......
  • FL Studio 21官方中文版功能介绍及2023最新下载详细图文安装激活教程配置要求
    FLStudio21版本更新现已发布,在这次更新中优化了很多功能,但这些现在都不重要,FLStudio21版本的这次更新中令人瞩目的更新莫过于对简体中文版的支持了。以前FLStudio只有英文版,想要用上中文版只有用汉化包,而且有些音译过来的并不准确,或多或少存在些问题。而此次更新的FLStudio21......
  • CF1855B Longest Divisors Interval 题解
    题意:给定一个数\(n\),求一个连续区间\([l,r]\)使得\(n\)是区间内每个数的倍数,最大化这个区间的长度(多组数据)。思路:逆向思考一波,(如果一个数\(x\)不是\(n\)的因数,那么\(x\)的倍数不能在区间内。举个例子,比如$n$是13,3不是13的因数,\(3,6,9,12\)也就不可能出现......