栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring框架 —— Bean的管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring框架 —— Bean的管理

Spring框架 —— Bean的管理

文章目录
    • Spring框架 —— Bean的管理
      • (1).什么是Bean管理
      • (2).Bean管理操作的两种方式
      • (3).基于注解的方式实现Bean管理和注入属性(常用)
        • 1.什么是注解
        • 2.Spring针对Bean管理中创建对象提供的注解
        • 3.用注解的方式创建对象
        • 4.用注解的方实现属性注入
          • 具体的代码如下:用注解的方式创建对象和赋值

(1).什么是Bean管理

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

1.创建对象

2.注入属性

(2).Bean管理操作的两种方式

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

2.基于注解方式实现

(3).基于注解的方式实现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("使用注解,方便吧!");
    }
}

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



   
    
    

④:测试

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);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号