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();
}
}
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();
}
}
相关文章推荐
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- Spring学习-12:Spring的Bean的装配:注解的方式
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- spring实战二之Bean的自动装配(非注解方式)
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
- spring实战四之Bean的自动装配(注解方式)
- Spring_IOC注解方式装配Bean对象
- 重温Spring之旅3——装配Bean(手工装配:使用注解方式)
- Spring中 基于注解的装配Bean 与 基于xml的对比总结
- Spring--IoC--Bean的装配--默认装配方式
- (转)Spring的bean管理(注解方式)
- Spring 使用注解装配Bean
- SpringBoot配置Bean的两种方式--注解以及配置文件
- Spring 全注解配置 bean 和 调用 (5) @Qualifier 自动装配歧义性消除
- spring装配bean的三种方式
- spring(三)(基于注解的方式配置bean)
- spring用注解的方式实现属性装配
- spring基础-Bean的装配方式(一)基于xml的装配