spring IOC装配Bean(注解方式)
1 Spring的注解装配Bean
(1) Spring2.5 引入使用注解去定义Bean
- @Component 描述Spring框架中Bean
(2) Spring的框架中提供了与@Component注解等效的三个注解:
- @Repository 用于对DAO实现类进行标注
- @Service 用于对Service实现类进行标注
- @Controller 用于对Controller实现类进行标注
***** 三个注解为了后续版本进行增强的.,这三个注解的作用也就是说可以更好的为mvc层每一层做个说明。
注意:配置文件中一定要加xld的引用,同时要加一个标签
<context:component-scan base-package="cn.uestc.spring3"/>
扫描某个包下面的类让他可以使用注解方式
@Component("helloService")
public class HelloService {
public HelloService() {
System.out.println("start");
}
public void sayHello () {
System.out.println("hello");
}
}
2 Bean的属性注入:
(1) 普通属性;
@Value(value="itcast")
private String info;
(2) 对象属性:
- @Autowired:自动装配默认使用类型注入.
- @Autowired
@Qualifier("userDao") --- 按名称进行注入.
(上述两种方式第一种只要你注入的对象的名字和你属性的名字是一致的就可以不用Quealifier的注解了,注意这里面的名字一直是属性和注入对象中setXXX的set之后的名字一直)这句话是个思路,说的不正确。
意思是属性如果是对象那么如果不用Qualifier,那么你的属性名应该和对象的bean的id或者name是一样的,如果不一样那么需要加上Qualifier。 - @Autowired
@Qualifier("userDao")
private UserDao userDao;
等价于
@Resource(name="userDao")
private UserDao userDao;
@Component("helloService")
public class HelloService {
@Value(value = "123")
private String info;
// @Autowired(required = true)
// @Qualifier("userDao")
@Resource(name = "userDao")
private UserDao u12serDao;
public HelloService() {
System.out.println("start");
}
public void sayHello () {
System.out.println("hello" + u12serDao.getName());
}
}
3 Bean其他的属性的配置:
(1) 配置Bean初始化方法和销毁方法:
init-method 和 destroy-method.
- @PostConstruct 初始化
- @PreDestroy 销毁
@PostConstruct
public void setUp() {
System.out.println("初始化");
}
@PreDestroy
public void teardown() {
System.out.println("销毁");
}
(2) 配置Bean的作用范围:
- @Scope
只需要在类上加该标签,默认是单例方式
测试方式同样是采用老办法
public class HelloServiceTest {
@Test
public void demo1 () {
ClassPathXmlApplicationContext classPathXmlApplicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloService helloService = (HelloService) classPathXmlApplicationContext.getBean("helloService");
helloService.sayHello();
classPathXmlApplicationContext.close();
}
}
4 Spring3.0提供使用Java类定义Bean信息的方法
这种方式是通过java编程方式来配置,比如设置bean和属性,但是该方法一般不用。
@Configuration
public class BeanConfig {
@Bean(name="car")
public Car showCar(){
Car car = new Car();
car.setName("长安");
car.setPrice(40000d);
return car;
}
@Bean(name="product")
public Product initProduct(){
Product product = new Product();
product.setName("空调");
product.setPrice(3000d);
return product;
}
}
5 实际开发中使用XML还是注解?
XML:
- bean管理
注解;
- 注入属性的时候比较方便.
两种方式结合;一般使用XML注册Bean,使用注解进行属性的注入.
因为如果修改代码的话只需要在配置文件中更改使用的bean就可以了,而属性的注入一般来说是在程序中要指定好的
<context:annotation-config/>
s
@Autowired
@Qualifier("orderDao")
private OrderDao orderDao;
spring IOC装配Bean(注解方式)的更多相关文章
- Spring框架(3)---IOC装配Bean(注解方式)
IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注 ...
- 05_IOC容器装配Bean(注解方式)
IOC容器装配Bean(注解方式) 1.使用注解方式进行Bean注册 xml 方式: <bean id="" class=""> spring2.5 ...
- Spring框架(2)---IOC装配Bean(xml配置方式)
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
- 使用Spring IoC进行Bean装配
Spring概述 Spring的设计严格遵从的OCP(开闭原则),保证对修改的关闭,也就是外部无法改变spring内部的运行流程:提供灵活的扩展接口,也就是可以通过extends,implements ...
- Spring 框架 详解 (三)-----IOC装配Bean
IOC装配Bean: 1.1.1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. * 构造方法实例化:(默认无参数) * 静态工厂实例化: * 实例工厂实例化: 无参数构造方法 ...
- Spring框架---IOC装配Bean
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...
- Spring总结四:IOC和DI 注解方式
首先我们要了解注解和xml配置的区别: 作用一样,但是注解写在Bean的上方来代替我们之前在xml文件中所做的bean配置,也就是说我们使用了注解的方式,就不用再xml里面进行配置了,相对来说注解方式 ...
- 04_IOC容器装配Bean(xml方式)
IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...
随机推荐
- python之socket
一.初识socket socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如, ...
- 微信小程序-视图模板
定义模板 使用name属性,作为模板的名字.然后在<template/>内定义代码片段,如: <!-- index: int msg: string time: string --& ...
- XPath使用实例
实例 1基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径 //BBB 选择所有BBB元素 /AAA/CCC 选择 ...
- 理解RESTful
REST全称为Representational State Transfer,可以翻译为“表现状态转换”,是由是Roy Thomas Fielding在他2000年的博士论文中提出的,目的是为了得到一 ...
- 远程连接redis
1.在ubuntu上的redis作为服务端,默认是打开的 在redis的配置文件redis.conf中,找到bind localhost注释掉. 注释掉本机,局域网内的所有计算机都能访问. bind ...
- javascript高级编程3第二章:在html中使用javascript
2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...
- 关于codeblock中一些常用的快捷键(搬运)
关于codeblock中一些常用的快捷键(搬运) codeblock作为一个常用的C/C++编译器,是我最常用的一款编译器,但也因为常用,所以有时为了更加快速的操作难免会用到一些快捷键,但是因为我本身 ...
- 数字图像处理作业使用OpenCV - 块提取
今天要记录的是树图第二次作业的第二题,Image Patch Extraction.这个概念真的不难懂,但是如果要我实际写的话,还真的不知道要怎么去遍历图像矩阵来提取块.在此要多谢邓大神的热心帮助,告 ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
- 不断弹出svchost.exe错误框
同事的一台电脑,xp系统,启动后就弹出svchost错误的对话框,不论确定还是取消,关闭后立刻又弹出. 打开任务管理器,尝试对一些后安装的软件结束进程,结束一个,关闭一次,看看结束哪一个,关闭后不再弹 ...