Spring 属性注入的注解

使用注解注入的方式,可以不用提供 set 方法


1、普通属性
@Value :用于注入普通类型.

2、对象属性
@Autowired :自动装配:

  • 默认按类型进行装配.
  • 如果存在两个相同Bean类型相同,则按照名称注入:
  • @Qualifier:强制使用名称注入.

@Resource 相当于:

  • @Autowired 和@Qualifier 一起使用.

演示

1、dao实现

package com.test.dao.impl;

import java.util.List;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import com.test.dao.UserDao;
import com.test.domain.User;

//可以不写名字;使用@Component注解就相当于在配置中写了一个bean
//@Component(value = "userdao")

@Repository(value = "userdao")
public class UserDaolmpl implements UserDao {
	public List<User> findAllUser() {
		// TODO Auto-generated method stub
		System.out.println("User");
		return null;
	}	
}

2、service
注意:如果直接写@Service那么它的value就是当前类名的首字母小写userServiceimpl

package com.test.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import com.test.dao.UserDao;
import com.test.dao.impl.UserDaolmpl;
import com.test.domain.User;
import com.test.service.UserService;


/*Component的三个衍生注解(这三个注解是为了让标注类本身的用途清晰,Spring 在后续版本会对其增强):
	Controller:web层
	Service:业务层
	Repository:持久层*/

//@Component(value = "userService")
@Service(value = "userService")
public class UserServiceimpl implements UserService{
	//这里需要导入javaEE的注解包;首先按名字进行装配,如果找不到就按照类型进行装配(如果已经按名字来找了的话,找不到就会报错)
	//@Resource(name="userdao")
	
	//这个不需要导包,或者说已经导入过了;它是Spring自带的;默认直接按照类型进行装配,如果需要按照名字装配必须使用@Qualifier
	@Autowired
	
	private UserDao userdao;

//	public UserDao getUserdao() {
//		return userdao;
//	}
//	//注解也可以作用到set方法(只是这种方法使用的很少)
//	@Resource(name="userDao")
//	public void setUserdao(UserDao userdao) {
//		this.userdao = userdao;
//	}

	@Override
	public List<User> queryUser() {
		//UserDao userdao = new UserDaolmpl();
		userdao.findAllUser();
		System.out.println("over1");
		return null; 
	}
	
}

3、测试

package springpro1;

import java.util.Iterator;
import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.dao.Order;
import com.test.dao.UserDao;
import com.test.domain.User;
import com.test.service.UserService;

public class TestDemo1 {
	@Test
	public void test3(){
		ApplicationContext ap = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		UserService userService = (UserService) ap.getBean("userService");
		userService.queryUser();
	}
}

在这里插入图片描述

在这里插入图片描述

Bean 的作用范围的注解

@Scope:

  • singleton:单例

  • prototype:多例

在当前注解下面设置就可以改变它是单列或者多列
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值