首页 > 其他分享 >Spring(基础篇1)

Spring(基础篇1)

时间:2024-08-28 19:50:56浏览次数:10  
标签:package Spring lsl 基础 public import com class

本篇博客讲解Spring框架里面的通过xml方式对Bean的基础配置,实例化方式,以及DI的注入,偏于基础。

一.Bean的基础配置  

  • Id 属性 and Class 属性
 <bean id = "userService"  class="com.itheima.Service.Impl.UserServiceImpl"></bean>
  •  Scope属性
Scope属性取值含义
 singleton
单例,默认值,spring容器创建的时候,就进行了bean的实例化,并存储到容器内部的单例池中
 prototype
原型,Spring容器初始化的时候不会创建bean实例,当调用getBean时才会实例化Bean,每次getBean都会创建一个新的Bean实例。

 

 

 

 

例如:

  <bean id = "userService"  class="com.itheima.Service.Impl.UserServiceImpl" scope="prototype" > </bean>
  •  Lazy-init属性

          当lazy-init为true时延迟加载,也就是spring创建时不会创建bean,等待用到时,在创建bean实例并存到单例池。

例如:

 <bean id = "userService"  class="com.itheima.Service.Impl.UserServiceImpl" lazy-init="true" ></bean>
  • Init-method 属性 and Destroy-method 属性
属性名含义
Init-method指定Bean的初始化方法
Destroy-method指定Bean的销毁方法

 

 

例如: 

package com.itheima.Service.Impl;
import com.itheima.Service.UserService;
public class UserServiceImpl implements UserService {

    public void init() {
        System.out.println("初始化方法");
    }

    public void destroy() {
        System.out.println("销毁方法");
    }
}

配置:

  <bean id = "userService"  class="com.itheima.Service.Impl.UserServiceImpl" init-method="init" destroy-method="destroy" ></bean>

二. Bean的实例化方式

  • 无参构造器 
package com.itheima.Test;
/**
 * 无参构造方法创建Bean*/
public class UserTest {

    public UserTest() {

    }
}

配置:

 <bean id="UserTest" class="com.itheima.Test.UserTest"></bean>
  •  有参构造器 
package com.itheima.Test;
/**
 * 有参构造方法创建Bean*/
public class UserTest {
    private String  name;

    public UserTest(String name) {
        this.name = name;
    }
}

配置:

<bean id="UserTest" class="com.itheima.Test.UserTest">
        <constructor-arg name="name" value="xx"></constructor-arg></bean>
  • 静态工厂 

静态工厂:

package com.itheima.Test;
/**静态工厂*/
public class Test2 {
    public static UserTest2 userTest2(){
        return userTest2();
    }
}

需要被创建的Bean:

package com.itheima.Test;
public class UserTest2 {
}

配置:

<bean id="UserTest2" class="com.itheima.Test.Test2" factory-method="userTest2"></bean>

作用:

1. 配置第三方的bean放到bean容器中。

2.可以在创建bean之前执行一些操作。

  • 实例工厂 

 实例工厂:

package com.itheima.Test;
public class Test3 {
    public UserTest3 userTest3(){
        return new UserTest3();
    }
}

需要被创建的Bean:

package com.itheima.Test;
public class UserTest3 {
}

配置:

<bean id="Test3" class="com.itheima.Test.Test3"></bean>
    <bean id="UserTest3" factory-bean="Test3" factory-method="userTest3"></bean>

作用:

1. 配置第三方的bean放到bean容器中。

2.可以在创建bean之前执行一些操作。

  三. DI注入(均使用Set方法注入)

  • 普通数据类型注入 
package com.lsl.Controller.Impl;
import com.lsl.Controller.UserController;
public class UserControllerImpl implements UserController {

    private String UserName;
    public void setUserName(String userName) {
        UserName = userName;
    }

}

配置:

<bean id="UserController" class="com.lsl.Controller.Impl.UserControllerImpl">
 <property name="userName" value="lsl"></property>
</bean>
  • 对象引用类型注入 
package com.lsl.Dao.Impl;
import com.lsl.Controller.UserController;
import com.lsl.Dao.UserDao;

public class UserDaoImpl implements UserDao {
    private UserController userController;
    public void setUserController(UserController userController) {
        this.userController = userController;
    }
}

配置:

<bean id="UserDao" class="com.lsl.Dao.Impl.UserDaoImpl">
    <property name="userController" ref="UserController"></property>
</bean>
  • List集合 and Set集合
package com.lsl.Service.Impl;
import com.lsl.Service.UserService;
import java.util.List;
import java.util.Set;

public class UserServiceImpl implements UserService {
    private List<String> stringList;
    private Set<String> stringSet;
   
    public void setStringList(List<String> stringList) {
        this.stringList = stringList;
    }

    public void setStringSet(Set<String> stringSet) {
        this.stringSet = stringSet;
    }

}

配置:

<bean id="UserService" class="com.lsl.Service.Impl.UserServiceImpl">
 <property name="stringList">
     <list>
         <value>121</value>
         <value>bbb</value>
         <value>ccc</value>
     </list>
 </property>

    <property name="stringSet">
        <set>
            <value>234</value>
            <value>5678</value>
        </set>
    </property>
</bean>
  •  Map集合
package com.lsl.Service.Impl;
import com.lsl.Service.UserService;
import java.util.Map;

public class UserServiceImpl implements UserService {
    private Map<String,String> stringStringMap;

    public void setStringStringMap(Map<String, String> stringStringMap) {
        this.stringStringMap = stringStringMap;
    }
}

配置:

<bean id="UserService" class="com.lsl.Service.Impl.UserServiceImpl">
    <property name="stringStringMap">
        <map>
            <entry key="qq" value="11111"></entry>
            <entry key="qq" value="11111"></entry>
            <entry key="qq" value="11111"></entry>
        </map>
    </property>
</bean>
  • properties类型
package com.lsl.Controller.Impl;
import com.lsl.Controller.UserController;
import java.util.Properties;
public class UserControllerImpl implements UserController {
    
    private Properties properties;

    public void setProperties(Properties properties) {
        this.properties = properties;
    }
}

配置:

<bean id="UserController" class="com.lsl.Controller.Impl.UserControllerImpl">
    <property name="userName" value="lsl"></property>
    <property name="properties">
        <props>
            <prop key="p1">1111</prop>
            <prop key="p2">2222</prop>
        </props>
    </property>
</bean>
  • 拓展 

以上配置均为手动配置,除此之外Spring提供的有自动装配功能,可以根据类型或者名字进行自动装配(详解在基础第二篇)。


 

 

 

 

 

 

 

 

 

 

 

 

 

标签:package,Spring,lsl,基础,public,import,com,class
From: https://blog.csdn.net/2402_86584152/article/details/141641104

相关文章

  • SpringMVC接收返回值方法汇总
    传统方式@RequestMapping("/param01")publicStringparam01(HttpServletRequestrequest)throwsUnsupportedEncodingException{request.setCharacterEncoding("UTF-8");Stringid=request.getParameter("id");request.setAt......
  • 计算机网络基础
       本篇是关于计算机网络基础的复习和总结,仅供阅读。目录TCP/IP网络模型 应用层传输层网络层网络接口层总结数据传输的具体过程,都经历了什么?最初的模样:HTTP真实地址查询:通讯录DNS远行工具集合:协议栈可靠的传输:衣服TCP    TCP报文    关于......
  • 基于springboot+vue.js的超市购物系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于springboot+vue.js的短文写作竞赛管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于Springboot的档案管理系统
    文章目录项目介绍主要功能截图:部分代码展示设计总结项目获取方式......
  • 【专题】2024年中国AI人工智能基础数据服务研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=37516随着人工智能技术的迅猛发展,AI基础数据服务行业迎来了前所未有的发展机遇。报告合集显示,2023年中国AI基础数据服务市场规模达到45亿元,且未来五年复合增长率有望达到30.4%。多模态大模型、长文本处理能力提升以及大模型小型化技术成为A......
  • spring和springboot的区别
    Spring和SpringBoot是两个相关的框架,它们有一些区别和联系。Spring是一个开源的企业级应用程序开发框架,它提供了广泛的功能和模块,用于开发Java应用程序。它采用了IoC(控制反转)和AOP(面向切面编程)等设计原则,帮助开发者构建可扩展、模块化和松耦合的应用程序。SpringBoot是基于Sp......
  • C++基础/C++中的多态(关于虚...)
    C++中的多态(关于虚...)1.前置基础知识1.1对象是如何存储在内存中的#include<iostream>#include<string>classAnimal{private:stringname;intage;public:Animal(std::stringname,intage):name(name),age(age){};~Animal();virtu......
  • 将SpringBoot打包之后的jar设为守护进程
    要在Linux系统上将SpringBoot打包的jar服务设置为守护进程,并实现服务挂掉后自动重启,你可以使用systemd或supervisord这样的工具。我选择了systemd的方案最终脚本如下:创建一个脚本/home/beirui/start-beirui-admin.sh,内容如下:#!/bin/bash/usr/bin/java-jar/home/beirui/b......
  • 信息学奥赛初赛天天练-77-NOIP2015普及组-基础题2-二进制、连通图、最小生成树、链表
    NOIP2015普及组基础题24在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的A二进制码B八进制码C十进制码D智能拼音码5下列说法正确的是()ACPU的主要任务是执行数据运算和程序控制B存储器具有记忆能力,其中信息任何时候都不会......