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=& ...
随机推荐
- dm9000网口收发控制以及mac地址过滤设置
目的 :完成网口收发调试 过程 : 1.网口初始化,根据芯片数据手册配置 2.网口发数,先向DM9000中的TX FIFO存入数据,然后出发发送寄存器完成发送: 3.网口接收 . ...
- Python控制window进行简单的消息弹窗
有人提到可以用easygui 稍后尝试一下
- Ubuntu install g++
We can use two ways to install g++ on Ubuntu. 1. a. sudo apt-get install make gcc g++. b. sud ...
- hdu 4585 Shaolin treap
Shaolin Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Problem ...
- angularjs指令系统系列课程(2):优先级priority,模板template,模板页templateUrl
今天我们先对 priority,template,templateUrl进行学习 1.priority 可取值:int 作用:优先级 一般priority默认为0,数值越大,优先级越高.当一个dom元 ...
- jq 实现上下排序的一段代码
前台页面: <div class="adddaren_box"> {%if isset($masterDetailsInfo)%} <div class=&quo ...
- hibernate hql
hibernate在使用hql进行select count(*) from ObjectA left join fetch apath 时会报错,多余的left join去掉即可.
- 还有 3 天,苹果就要关上 HTTP 大门了
版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/274113001482113656 来源:腾云阁 h ...
- 20145218 GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 虚拟机中分析过程 输入gcc - g example.c -o example -m32指令在64位机器上产生32位汇编,但出现以下错误: 这时需要使用sudo apt-g ...
- appium 1.6.3+Xcode运 For Mac
1. 下载两个版本的Xcode, Xcode 1.7.3 与Xcode 8.2 ,放置在不同的目录下.进入terminal, 选择需要的版本: sudo xcode-select -switch // ...