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=& ...
随机推荐
- target与currentTarget区别 ( html是弹窗居中的例子)
<!DOCTYPE html> <html> <head> <title></title> <style type="tex ...
- android学习之路--------intent
正式开始学习android,没有看书和视频,所以没有系统的学,只是看到哪个知识点就去学习,今天学习界面之间的跳转,以及传值,主要的知识点是intent, @Override protected voi ...
- html select的事件 方法 属性
事件 onactivate 当对象设置为活动元素时触发. onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发. onbeforeactivate 对象要被设置为当前元素 ...
- jquery tmpl 详解
官方解释对该插件的说明:将匹配的第一个元素作为模板,render指定的数据,签名如下: .tmpl([data,][options]) 其中参数data的用途很明显:用于render的数据,可以是任意 ...
- getElementsByClassName 兼容性
getElementsByClassName是html5 新增加的一个类名.该方法可以让我们通过class属性中的类名来访问元素.不过该方法比较新,某些DOM树还没有,因此在使用中要当心.由于只有较新 ...
- Git_1基础操作,从安装到提交完成(windows)
github地址:https://github.com/zhangsai521314/Git 1:安装Git Bash(https://git-scm.com/),安装一路NEXT. 2:目录架构: ...
- Asp.net管道模型(管线模型)
Asp.net管道模型(管线模型) 前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预 ...
- freeMarker生成静态页面
项目结构图 footer.ftl des==>${f.des}<br/> <a href="http://www.baidu.com"> 百度 < ...
- 转:Eclipse快捷键 10个最有用的快捷键
Eclipse快捷键 10个最有用的快捷键 Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代 ...
- jdbcTemplate的Dao层封装
package com.easyrail.base.dao; import java.io.Serializable; import java.lang.reflect.Field; import j ...