IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Spring5框架学习1(ioc容器) -> 正文阅读

[系统运维]Spring5框架学习1(ioc容器)

小编主要介绍的是ioc中的两大重要作用:创建对象和DI(属性注入)
Spring框架的底层原理? :xml解析技术,工厂模式,反射?

(小编就直接使用现成的图做一下描述)

对象的创建(基于xml文件)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置User类的对象创建
     id属性:创建对象的镜像别名
     class:类的全路径
     name:早期的镜像别名
 -->
    <bean id="user" class="com.java.sping5.User"></bean>
<!-- DI:注入文件的属性  通过xml配置文件-->
    <bean id="Book" class="com.java.sping5.Book">
        <!-- 属性注入  name:属性项  value:属性值-->
        <property name="bname" value="张三是怎样装逼的"></property>
        <property name="banthor" value="张三"></property>
      <!--<property name="bname"><null></null></property> 设置属性是空值-->
    </bean>
    <!-- DI:注入文件的属性  通过有参数的构造-->
    <bean id="oder" class="com.java.sping5.Oder">
<constructor-arg name="oname" value="redmi50"></constructor-arg>
  <constructor-arg name="oadress" value="china"></constructor-arg>
    </bean>
</beans>

?class类

package com.java.sping5;
//尝试用sping来创建对象并调用方法
public class User {
    public void  add(){
        System.out.println("add a user");
    }
}

package com.java.sping5;

public class Oder {
    private String oname;
    private String oadress;

    public Oder(String oname, String oadress) {
        this.oname = oname;
        this.oadress = oadress;
    }

    @Override
    public String toString() {
        return "Oder{" +
                "oname='" + oname + '\'' +
                ", oadress='" + oadress + '\'' +
                '}';
    }
    public    void output (){
        System.out.println(oname);
        System.out.println(oadress);
    }
}

package com.java.sping5;

public class Book {
    private  String bname;
    private  String banthor;
    public void setBname(String bname) {
        this.bname = bname;
    }
    public void setBanthor(String banthor) {
        this.banthor = banthor;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bname='" + bname + '\'' +
                ", banthor='" + banthor + '\'' +
                '}';
    }
}

属性注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--实现外部对象的注入 bean-->
      <bean id="userservice" class="com.java.sping5.service.UserService">
         <!--注入UserDao对象-->
         <property name="userDao" ref="userdao"></property>
      </bean>
    <bean id="userdao" class="com.java.sping5.dao.UserDaoimpl"></bean>
</beans>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!--内部Bean注入  级联赋值-->
    <bean id="emp" class="com.java.sping5.Bean.Emp">
    <!--基本属性-->
        <property name="ename" value="张三"></property>
    <property name="gender" value="男"></property>
      <property name="dept">
          <bean id="dept" class="com.java.sping5.Bean.Dept">
              <property name="dname" value="安保部"></property>
          </bean>
      </property>
    </bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--属性注入 数组 ,集合-->
 <bean id="array" class="com.java.Bean.Dao.Array">
    <!-- 数组注入-->
     <property name="students">
         <array>
             <value>张三</value>
             <value>李四</value>
             <value>王伟</value>
         </array>
     </property>
     <!--List集合-->
     <property name="list">
         <list>
             <value>张三</value>
             <value>李四</value>
             <value>王伟</value>
         </list>
     </property>
     <!--Map集合-->
     <property name="map">
         <map>
             <entry key="java" value="java入门到放弃"></entry>
             <entry key="mysql" value="Mysql删库跑路"></entry>
         </map>
     </property>
     <!--Set集合-->
     <property name="set">
         <set>
             <value>Mysql</value>
             <value>Rides</value>
         </set>
     </property>
     <property name="courousList">
       <!--集合中注入对象-->
         <list>
             <ref bean="courous1"></ref>
             <ref bean="courous2"></ref>
         </list>
     </property>
 </bean>
    <bean id="courous1" class="com.java.Bean.Dao.Courous">
        <property name="cname" value="java" ></property>
    </bean>
    <bean id="courous2" class="com.java.Bean.Dao.Courous">
        <property name="cname" value="mysql" ></property>
    </bean>
</beans>

对象创建基于(注解)

首先是在xml文件中开启文件扫描


<context:component-scan base-package="com.java.spring" >
</context:component-scan>
<!--表示的是扫描spring这个包-->

接口和实现类

package com.java.spring.Dao;
public interface UserDao {
    public void add();
}

//实现类
package com.java.spring.Dao;

import org.springframework.stereotype.Repository;

@Repository(value = "userdaoimpl")
public class UserDaoimpl implements UserDao{
    @Override
    public void add() {
        System.out.println("userdao add");
    }
}

注解实现对象创建和测试

package com.java.spring;
import com.java.spring.Dao.UserDao;
import com.java.spring.Dao.UserDaoimpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.expression.EvaluationException;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
//注解来创建对象 如果不添加(value="xxx") 默认是类的首字符小写名称
//@Component(value ="user") @Service
@Controller
public class User {
    @Autowired  // 根据类型进行注入  注解后不需set方法
    @Qualifier(value = "userdaoimpl") //当一个接口的实现类较多的时候,就可以根据名称找的需要的类
    private UserDao userDao;
    @Value("张三")
    private  String uname;
    public void add(){
        System.out.println(uname);
        userDao.add();
    }
}
package com.java.spring;

import com.java.comfriger.Springcomfeiger;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Springtest {

    @Test
    public void test1(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("Bean4.xml");
        User user = context.getBean("user", User.class);
        System.out.println(user);
        user.add();
    }
    @Test
    public void test2(){
        ApplicationContext context=
                new AnnotationConfigApplicationContext(Springcomfeiger.class);
        User user = context.getBean("user", User.class);
        System.out.println(user);
        user.add();
    }
}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:05:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:45:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码