• spring自动装配


    一、Bean手动装配

     applicationContext.xml

    <!--把testDao对象的创建权交给Spring-->
    <bean id="testDao" class="dao.TestDaoImpl"></bean>

    public class SpringTest {
    
        @Test
        public void demo() {
            //初始化Spring容器ApplicationContext,加载配置文件
            ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
            //通过容器获取testDao实例
            TestDao testDao = (TestDao) application.getBean("testDao");     调用"dao.TestDaoImpl"这个类
            testDao.sayHello();
        }
    }
    

    手动装配类里面的置要把set方法写出来----------------装配类变量

     applicationContext.xml

    <bean id="He" class="dao.Hello">
    <property name="str" value="Spring"/>
    </bean>
    public class SpringTes {
    
        @Test
        public void demo(){
            //初始化Spring容器ApplicationContext,加载配置文件
            ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
            //通过容器获取testDao实例
            Hello testDao = (Hello) application.getBean("He");
            System.out.println(testDao.toString());
        }
    }
    

      

    传类参数的话配置文件这么写---------------装配类

    <bean id="mp" class="dao.TestDaoImpl"></bean>
    <bean id="He" class="dao.Hello">
    <property name="testDao" ref="mp"/> name是dao.Hello里面的变量 ref取上面id=mp的类

    </bean>

    自动装配的加 autowire 他可以根据 set方法后面的英文查找(不分大小写)
        <bean id="cat" class="dao.Cat"></bean>
    <bean id="Do" class="dao.Dog" autowire="byName">
    <property name="str" value="mp"/>
    <!-- <property name="cat" ref="cat"/>--> (省略了这句)
    </bean>
    自动装配的加 autowire="byType" 他可以根据 配置文件class="dao.Cat"找 相同的就可以省去id
        <bean id="cat" class="dao.Cat"></bean>
    <bean id="Do" class="dao.Dog" autowire="byType">
    <property name="str" value="mp"/>
    <!-- <property name="cat" ref="cat"/>--> (省略了这句)
    </bean>


    二、注解装配

    https://www.bilibili.com/video/BV1WE411d7Dv?p=12

    ---------------------------第一波

    @Autowired 注解

    1、省略set的方法书写,直接在变量上面标注即可,他可以在配置文件  <bean class="dao.Cat"></bean>找到且引入这个了类

     applicationContext.xml

    <bean id="D2" class="dao.Cat"></bean>

    <bean id="D1" class="dao.Cat"></bean>
    <bean id="Do" class="dao.Dog" ></bean>

    科普
    @Autowired
    @Qualifier(value = "Do3")
    这2个是配对的,如果配置文件存在多个配置的类 可以用Qualifier指定一个id的类去装配


     ----------------------第二波--注解装配(不需要在配置文件里面注册类了)

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!-- 开启自动装配-->
        <context:annotation-config/>
    <!--    扫描包下面的注解注解就生效-->
        <context:component-scan base-package="dao"/>
    
    </beans>
    

     那么就可以使用注解装配

    @Component
    public class Hello {
    private String name="kaibin";

    public void CAt() {
    System.out.println("喵~~");
    }
    }

    @Component (中文意思就是组件)就等价于在配置文件里面写   <bean id="hello" class="dao.Hello"></bean>

    @Value("kaibin2")
    public void setName(String name) {
    this.name = name;
    }

    @Value("kaibin")
    private String name;

    @Value  就等价于 

    <bean id="hello" class="dao.Hello">

    <property name="name" value="kaibin2"/>

    </bean>

     

    ---------------------------------这里呢 应为mvc分层所以相同的注解会因为不同的层油不同的叫法 

    科普: server controller dao各层关系   https://blog.csdn.net/u010786902/article/details/50948297

    @Component衍生注解

    dao层  @Repository

    server层  @Service

    controller层 @Controller

    这四个注解的功能都是一样的,把某个类注册到Spring中

    @RestController 这个注解等效于 @Controller加上 @ResponseBody,添加了这个注解就是让这个类返回json串,这是spring内部提供的json解析。

  • 相关阅读:
    乱七八糟
    堆-heap
    转linux文件的读写
    @转EXT2->EXT3->EXT4
    (转)僵死进程与孤儿进程
    java
    poj-1062-昂贵的聘礼
    java 之 wait, notify, park, unpark , synchronized, Condition
    事物(笔记)
    BPX-tree
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/14961473.html
Copyright © 2020-2023  润新知