您的位置:首页 > 编程语言 > Java开发

Spring注解方式装配Bean

2017-07-23 11:02 316 查看
@Component  描述Spring框架中Bean

Spring的框架中提供了与@Component注解等效的三个注解:

@Repository 用于对DAO实现类进行标注

@Service 用于对Service实现类进行标注

@Controller 用于对Controller实现类进行标注

这三个注解为了以后版本的扩展

普通属性

@value(value="小跃哥的注解属性注入")

private String info;

对象属性

@Autowired(required=true) 自动装配 默认使用类型装配 required默认为true  false表示忽略异常

@Qualifier("userDao")  按名称注入

@Resource(name="userDao")    按名称注入 相当于  @Autowired+@Qualifier

初始化和销毁

@PostConstruct 初始化

@PreDestroy    销毁  销毁只对单例有效

scope属性

@Scope(value="prototype")    多例    默认值为单例

使用注解装配需在配置文件中加上

<context:annotation-config />UserDao类:
package cn.nedu.wy.demo01;

import org.springframework.stereotype.Repository;

@Repository("userDao") //用于Dao实现类的标注
public class UserDao {

}UserService类:
package cn.nedu.wy.demo01;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
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.context.annotation.Scope;
import org.springframework.stereotype.Component;

//注解方式装配Bean
@Component("userService") //描述Bean value相当于id 可以省略value不写
@Scope(value="prototype") //多例 默认值为单例
public class UserService {
@Value(value="小跃哥的注解注入") //注入属性值
private String info;
// @Autowired(required=true) // 自动装配默认使用类型注入 required=false 忽略异常 默认值问true
// @Qualifier("userDao") //按名称进行注入
@Resource(name="userDao") // 相当于 @Autowired+@Qualifier
private UserDao userDao;
public void sayHello(){
System.out.println("hello world!"+info);
}
@Override
public String toString() {
return "UserService [info=" + info + ", userDao=" + userDao + "]";
}

@PostConstruct //初始化
public void setUp(){
System.out.println("初始化......");
}
@PreDestroy // 销毁只对单例有效
public void tearDown(){
System.out.println("销毁......");
}
}测试类:
package cn.nedu.wy.demo01;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest01 {
@Test
public void demo01(){
ClassPathXmlApplicationContext applicationContext = new
ClassPathXmlApplicationContext
("applicationContext.xml");
UserSe
4000
rvice u1 = (UserService) applicationContext.getBean("userService");
System.out.println(u1);
UserService u2 = (UserService) applicationContext.getBean("userService");
System.out.println(u2);
//销毁只对单例有效 所以没销毁
applicationContext.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: