Spring 注解 配置Bean

开发工具与关键技术:eclipse.exe
作者:农村扛粑子
撰写时间:2021年  1月20日
在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多, 会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难 Java 从 JDK 5.0 以后,提供了 Annotation(注解)功能,Spring 也提供了对 Annotation 技术的全面 支持。 

下面就是一些注解的说明与讲解。
1.@Component 可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean),并且 可以作用在任何层次。使用时只需将该注解标注在相应类上即可,默认情况下生成的id名称为类 名称的 首字母小与。
2.@Repository 用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
3.@Service 通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
4.@Controller 通常作用在控制层,用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
5.@Autowired 用于对 Bean 的属性变量、属性的 Set 方法及构造函数进行标注,配合对应的注解处理器完成 Bean 的 自动配置工作。默认按照 Bean 的类型进行装配。
6.@Resource 其作用与 Autowired 一样。其区别在于 @Autowired 默认按照 Bean 类型装配,而 @Resource 默认按 照 Bean 实例名称进行装配。 @Resource 中有两个重要属性:name 和 type。 Spring 将 name 属性解析为 Bean 实例名称,type 属性解析为 Bean 实例类型。如果指定 name 属 性,则按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配。 如果都不指定,则先按 Bean 实例名称装配,如果不能匹配,则再按照 Bean 类型进行装配;如果都无 法匹配,则抛出 NoSuchBeanDefinitionException 异常。
7.@Qualifier 与 @Autowired 注解配合使用,会将默认的按 Bean 类型装配修改为按 Bean 的实例名称装配,Bean 的实例名称由 @Qualifier 注解的参数指定。
8.@value 给属性赋值。
了解好了我们就用一些来实践吧。创建好的项目里的src文件里面创建Package包(com.gd.pojo和com.gd.Demo)然后在pojo创建两个类用来演示如下
一个user类

package com.gd.pojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;//相关的架包

//注解配置bean
@Component
public class User {
// 属性注入
@Value(“啦啦”)//名字为啦啦
private String name;
@Value(“20”)//岁数为20
private int age;
// 自动配置,默认根据类型配置,在所有bean中找类型是car.class
@Autowired
private car car;
public car getCar() {
return car;
}
public void setCar(car car) {
this.car = car;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}@Override
public String toString() {
return “User [name=” + name + “, age=” + age + “, car=” + car + “]”;
}
}
这是个car类如下
package com.gd.pojo;
import org.springframework.stereotype.Component;
//注解配置bean
@Component
public class car {
private String cname;
private String color;
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}@Override
public String toString() {
return “car [cname=” + cname + “, color=” + color + “]”;
}然后配置applicationContext.xml src目录下新建applicationContext.xml文件,先导入jar包,后创建applicationContext.xml,否则无 代码提示 applicationContext.xml是Spring的核心配置文件 。

<?xml version="1.0" encoding="UTF-8"?>

<context:component-scan base-package=“com.gd.pojo,com.gd.demo”></context:component-scan>

然后回到com.gd.pojo.Demo下的dome的代码如下。
public class dome {
public static void main(String[] args) {
// 封装spring容器 context
// 内路径 ClassPathXmlApplicationContext用来加载spr ing.xml 环境变量路径
ApplicationContext context = new ClassPathXmlApplicationContext(“spring.Xml”);
System.out.println(“00000000000000”);

	// 常用方法 方法2对应applicationContext.xml中的id
	User u1 = context.getBean(User.class);

	// 调用getBeanD 方法3对应applicationContext.xml中的name
	User u2 = (User) context.getBean("user1");
	System.out.println(u1);
	System.out.println(u2);
	System.out.println(u == u2);
}

}运行测试效果后如下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值