Spring之使用注解实例化Bean并注入属性

本文介绍如何在Spring框架中使用注解进行Bean的实例化及属性赋值,并展示了注解与XML配置文件结合使用的具体实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.准备工作

(1)导入jar包

除了上篇文章使用到的基本jar包外,还得加入aop的jar包,所有jar包如下
所需jar包

(2)配置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:component-scan base-package="com.codeliu"/>
</beans>

2.注解实例化Bean

(1)实例化Bean有四个注解

  • @Component
  • @Service:业务层
  • @Controller:WEB层
  • @Repository:持久层

虽然分了层,但目前这四个注解的功能是一样的。

@Service(value = "user") //相当于bean标签中的id,四种方式功能一样
// @Component(value = "user")
// @Controller(value = "user")
// @Repository(value = "user")
@Scope(value = "singleton")
public class User {
	public void print() {
		System.out.println("user......");
	}
}
    @Test
	/**
	 * 使用注解实例化User类
	 */
	public void testUser() {
		// 读取配置文件
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
		User user = (User)context.getBean("user");
		user.print();
	}

3.注解为属性赋值

首先来个UserDao

@Component(value = "userDao")
public class UserDao {
	public void print() {
		System.out.println("userdao......");
	}
}

再来个service

@Service(value = "userService")
public class UserService {
	// 注入对象类型的属性,不用提供set方法
	// 1.使用自动装配
	// @Autowired  // 为byType类型,如果有多个相同类型的,得配合@Qualifier注解
	// private UserDao userDao;
	
	// 2.不使用自动装配
	@Resource(name = "userDao")
	private UserDao userDao;
	
	// 注入普通类型的属性
	@Value(value = "CodeTiger")
	private String name;
	
	public void print() {
		System.out.println("UserService......");
		userDao.print();
		System.out.println(name);
	}
}

为属性赋值,我们可以使用自动装配,也可以手动赋值。

    @Test
	/**
	 * 使用注解注入属性
	 */
	public void testUserService() {
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
		UserService service = (UserService)context.getBean("userService");
		service.print();
	}

4.注解和xml结合使用

当然我们也可以同时使用注解和xml,一般我们在xml中实例化Bean,使用注解为属性赋值。

这里就不贴代码了,原理都一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值