zoukankan      html  css  js  c++  java
  • Spring--->Bean的自动装配

    • 自动装配是Spring满足Bean以来的一种方式
    • Spring会在上下文自动寻找,并自动给bean装配属性

    在Spring中有三种装配方式

    1. 在xml中显示的配置
    2. 在Java中的显示配置
    3. 隐式的自动装配bean【重点】

    1、自动装配(xml显示配置)

        <bean name="dog" class="com.xian.pojo.Dog"></bean>
        <bean name="cat" class="com.xian.pojo.Cat"></bean>
        <bean name="person" class="com.xian.pojo.Person" autowire="byName">
           <property name="name" value="people"/>
        </bean>

    Byname:会自动在容器上下文找,和自己set方法后面对应的beanid

    ByType:会自动在容器上下文找,和自己对象属性对应的bean

       <bean name="dog" class="com.xian.pojo.Dog"></bean>
        <bean name="cat" class="com.xian.pojo.Cat"></bean>
        <bean name="person" class="com.xian.pojo.Person" autowire="byType">
           <property name="name" value="people"/>
        </bean>

    2、使用注解完成自动装配(隐形配置)

    注意添加功能 <context:annotation-config/>

    beans.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"
           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/>
    
        <bean name="dog22" class="com.xian.pojo.Dog"></bean>
        <bean name="cat" class="com.xian.pojo.Cat"></bean>
        <bean name="person" class="com.xian.pojo.Person">
            <property name="name" value="hanhan"/>
        </bean>
    
    </beans>

    @Autowired(@Nullable =false 允许字段为null)

    @Qualifier(value="dog22") 指定bean

    public class Person {
        @Autowired
        private Cat cat;
        @Autowired
        private Dog dog;
        private String name;}

    可以在属性上使用,也可以在set方法上使用

    @Resource注解

    public class Person {
        @Resource
        private Cat cat;
       @Resource
        private Dog dog;
        private String name;
    }

    @Autowired、@Resource注解的区别

    • 都是用来自动装配的,都可以放在属性字段身上
    • @Autowired是通过ByType的方式实现的,而且必须要求这个对象存在

    • @Resource默认通过ByName的方式实现的,如果找不到名字,则通过ByType的方式

    • 执行循序不同,

     3、Config配置文件【重点】(Java显示配置)

    配置文件加入@Configuration,对应的Bean加入@Bean

    @Configuration
    //这个也会被Spring容器托管,注册到容器中因为它本省就是一个@Component
    //@Configration本身就是一个配置类,和Beans.xml是一样的
    @ComponentScan("com.xian.dao")
    public class Config {
        //注册一个Bean就相当于之前的一个Bean标签
        //这个方法的名字就是Bean标签中的ID属性
        //方法的返回值就相当于bean标签当中的class属性
        @Bean
        public User getuser(){
            return new User();
        }
    }

    普通类

    类中只进行值得注入@Component(打开服务)@Value("hanhanhan")

    @Component
    public class User {
        // @Value等价于<property name="name" value="hanh"/>
    
        public String name;
    
        public String getName() {
            return name;
        }
        @Value("hanhanhan")
        public void setName(String name) {
            this.name = name;
        }
    }

    Test

     public void TestConfig(){
            ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            User getuser = context.getBean("getuser",User.class);
            System.out.println(getuser.getName());
        }
  • 相关阅读:
    简单cpu处理器
    用4bit的counter看同步复位与异步复位
    135实例——add_4
    int_float_double数据类型的存储格式。
    C#基础精华----枚举
    MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
    MSSQLServer基础06(变量,case,选择语句)
    SqlHelper类
    ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)
    ADO.NET基础01(ADO.NET组成,数据库的方式,SqlCommand,SqlDataReader)
  • 原文地址:https://www.cnblogs.com/springxian/p/13653473.html
Copyright © 2011-2022 走看看