Spring框架对于Bean的管理详解

2022-11-13 13:11:14 框架 管理 详解

什么是Bean管理

bean管理指的是如下的两个操作。

1.创建对象

2.注入属性

Bean管理操作的两种方式

1.基于xml配置文件的方式实现

2.基于注解方式实现

基于注解的方式实现Bean管理和注入属性(常用)

1.什么是注解

①:注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)

②:使用注解,注解作用在类上面,方法上面,属性上边

③:使用注解的目的:简化XML配置

2.Spring针对Bean管理中创建对象提供的注解

@Component 普通的类

@Controller 表现层

@Service 业务层

@Repository 持久层

上边四个功能一样,都可以用来创建bean实例

3.用注解的方式创建对象

①:编写接口和实现类

package com.qcby.testanno;
public interface UserService {
    public void hello();
}

②:在需要管理的类上添加@Component注解

package com.qcby.testanno;
import org.springframework.stereotype.Component;


@Controller(value="us")
public class UserServiceImpl implements UserService {
    public void hello() {
        System.out.println("使用注解,方便吧!");
    }
}

③:编写配置文件,重点是开启注解扫描。

<?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">
    <!--开启注解扫描 com.qcby所有的包中的所有的类-->
    <context:component-scan base-package="com.qcby"/>
</beans>

④:测试

package com.qcby.test;
import com.qcby.testanno.UserService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Demo2 {
    @Test
    public void run1(){
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("ApplicationContextanno.xml");
        UserService us = (UserService) ac.getBean("us");
        us.hello();
    }
}

4.用注解的方实现属性注入

@Value 用于注入普通类型(String,int,double等类型)

@Autowired 默认按类型进行自动装配(引用类型)

@Qualifier 不能单独使用必须和@Autowired一起使用,强制使用名称注入

@Resource Java提供的注解,也被支持。使用name属性,按名称注入

具体的代码如下:用注解的方式创建对象和赋值

// 默认当前类名就是ID名称,首字母小写
@Component(value = "car")
// @Controller
// @Service(value = "c")
// @Repository(valu = "c")
public class Car {
    // 注解注入值,属性set方法是可以省略不写的。
    // 只有一个属性,属性的名称是value,value是可以省略不写的
    @Value("大奔2")
    private String cname;
    @Value(value = "400000")
    private Double money;
    // 也不用提供set方法
    // 按类型自动装配的注解,和id名称没有关系
    @Qualifier("person")
    @Autowired  //注意:(所引用的Car类里面必须要写:类声明@Component(value="person") )
    // 注入引用数据类型:不需要写值,根据类型自动匹配
    //@Resource(name="person")  //是jdk提供,按照名称进行注入,只能在引用数据类型当中发使用
    private Person person;
    @Override
    public String toString() {
        return "Car{" +
                "cname='" + cname + '\'' +
                ", money=" + money +
                ", person=" + person +
                '}';
    }
}

注意声明:@Component(value = “person”)

@Component(value = "person")
public class Person {
    @Value("张三")
    private String pname;
    @Override
    public String toString() {
        return "Person{" +
                "pname='" + pname + '\'' +
                '}';
    }
}

测试:用注解的方式创建对象和赋值

@Test
public void run1(){
    // 工厂
    ApplicationContext ac = new
            ClassPathXmlApplicationContext("applicationContext.xml");
    // 获取对象
    Car car = (Car) ac.getBean("car");
    System.out.println(car);
}

到此这篇关于Spring框架对于Bean的管理详解的文章就介绍到这了,更多相关Spring Bean内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关文章