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=& ...
随机推荐
- redis 常用配置
参数说明 redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式 ...
- React 高级指南小记
接上篇,还是笔记,还是干货. 深入 JSX 如果使用 JSX 表达式 <Foo />,Foo 必须在范围内,因为这些标签被编译为对指定变量的直接引用. 由于 JSX 编译为对 React. ...
- 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别(转)
对于php$_SERVER这个全局变量 ,里面有很多的参数,慢慢的熟悉 1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STR ...
- 如何正确使用$_SERVER['DOCUMENT_ROOT']识别该路径的文件
echo $_SERVER['DOCUMENT_ROOT']; 这时输出当前文件所在的路径 D:/phpStudy/WWW/study/php&mysql $_SERVER['DOCUMENT ...
- JAVA 1.4 算术运算
1. 如果在一个算术运算中有int,double,float那么最终运算的结果是double,那么也就是说参与运算的类型和得到的结果:结果一定是参与运算的精度最高的那个类型 2. 算术运算中的除法 i ...
- Sublime Text 3插件安装
自动安装: 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2.粘贴对应版本的代码后回车安装 适用于 Sublime Text 3: import ...
- Strus2第一次课:dom4j解析xml文档
xml文本标记语言: 常用于交换数据:独立于操作系统.编程语言数据存储:xml数据配置:灵活性强,可读性高可以使用css样式改变xml样式 xml解析技术:dom解析xml技术: sax解析xml技术 ...
- 修改CMD字符编码
1.参考网址: 1.1.http://blog.useasp.net/archive/2012/04/24/how_to_use_UTF8_encoding_in_Windows_CMD.aspx 1 ...
- test 2016-12-28
// dpm(variable_get('node_submitted_page'));// //0// dpm(variable_get('language_count'));// //i3 = i ...
- React 学习资源汇总(最全的 React 学习资料)
http://www.360doc.com/content/16/1108/10/17722897_604827790.shtml