学习笔记——Spring 中Bean属性的注入

来源:互联网 发布:如何看待韩国 知乎 编辑:程序博客网 时间:2024/06/10 01:05

Spring 中Bean属性的注入分为两种:一种为普通属性,如private String name ;另一种为

一:普通属性的注入:

之前注入值需要提供一个Setter方法来,但是通过注解,可以不用使用Setter方法。

@Value(valeu="哈哈”)private String name;

二:如果为对象属性

@Autowiredprivate User user;@Repositorypublic class User{}
按照名称注入



但是我们使用较多的是按照名称来注入

@Repository("userDao")
public class UserDAO {
}
@Autowired
// Autowired 表示自动装配,默认使用类型注入
// 如果使用按名称注入则需要下边这个注解
// 而且要与调用类中的使用的名字一样 @Repository("userDao"),
@Qualifier("userDao")
// 如果不一样,则就不能注入成功
// @Autowired(required) required 默认为true,改为false,注入不成功将不会出现异常
// @Resource (name="userDao") 这个注解是对以上两个注解的整合,相当于以上两个注解的作用
private UserDAO userDAO;

完整代码为

UserService类:

package cn.itcast.Spring3.demo1;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import org.springframework.stereotype.Repository;/** * 通过注解的方式来装配Bean */// 由于Component注解中只有一个属性value,所以可以省略// userService 相当于给这个Bean 起了一个名字@Component("userService")// 基于注解的开发需要在配置文件中引入Context 空间,配置去扫描哪些包public class UserService {// 按值进行注入@Value(value = "哈哈")private String name;@Autowired// Autowired 表示自动装配,默认使用类型注入// 如果使用按名称注入则需要下边这个注解// 而且要与调用类中的使用的名字一样 @Repository("userDao"),@Qualifier("userDao")// 如果不一样,则就不能注入成功// @Autowired(required) required 默认为true,改为false,注入不成功将不会出现异常// @Resource (name="userDao") 这个注解是对以上两个注解的整合,相当于以上两个注解的作用private UserDAO userDAO;public void sayHello() {System.out.println("Hello Spring Annotetion…… " + name);}@Overridepublic String toString() {return "UserService [name=" + name + ", userDAO=" + userDAO + "]";}}

UserDAO类

package cn.itcast.Spring3.demo1;import org.springframework.stereotype.Repository;// 作用和 @Component 一样,但是@Repository含有分层的思想// @Repository 表示使用按类型注入的方式。// 如果使用按名称来注入则需要 @Repository()@Repository("userDao")public class UserDAO {}
测试类:

package cn.itcast.Spring3.demo1;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Spring3Test1 {@Testpublic void demo1() {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");UserService userService = (UserService) applicationContext.getBean("userService");System.out.println(userService);}}


配置文件:

<?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.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 告诉配置文件扫描哪个包 --><context:component-scan base-package="cn.itcast.Spring3.demo1" /></beans>



1 0
原创粉丝点击