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(注解方式)的更多相关文章

  1. Spring框架(3)---IOC装配Bean(注解方式)

    IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...

  2. Spring 框架 详解 (四)------IOC装配Bean(注解方式)

    Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component  描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注 ...

  3. 05_IOC容器装配Bean(注解方式)

    IOC容器装配Bean(注解方式) 1.使用注解方式进行Bean注册 xml 方式: <bean id="" class=""> spring2.5 ...

  4. Spring框架(2)---IOC装配Bean(xml配置方式)

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

  5. 使用Spring IoC进行Bean装配

    Spring概述 Spring的设计严格遵从的OCP(开闭原则),保证对修改的关闭,也就是外部无法改变spring内部的运行流程:提供灵活的扩展接口,也就是可以通过extends,implements ...

  6. Spring 框架 详解 (三)-----IOC装配Bean

    IOC装配Bean: 1.1.1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. * 构造方法实例化:(默认无参数) * 静态工厂实例化: * 实例工厂实例化: 无参数构造方法 ...

  7. Spring框架---IOC装配Bean

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

  8. Spring总结四:IOC和DI 注解方式

    首先我们要了解注解和xml配置的区别: 作用一样,但是注解写在Bean的上方来代替我们之前在xml文件中所做的bean配置,也就是说我们使用了注解的方式,就不用再xml里面进行配置了,相对来说注解方式 ...

  9. 04_IOC容器装配Bean(xml方式)

    IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...

随机推荐

  1. 工作上遇到的问题 DEBUG 001

    java文件断点跳到对应的class文件解决方式 我也是第一次遇到这个问题,找了很久解决办法.后面找开发组老大才解决. 问题描述: 调试程序,在ExportAction.java文件打断点.debug ...

  2. Android Studio 基本使用

    一 . 目录结构: 目录结构本身代表了一个workspace空间 Android stuido是单工程的开发模式 Android stuido里面project表示工作空间,相当于eclipse里面的 ...

  3. d3.js读书笔记-2

    比例尺 比例尺基本内容 比例尺是一组把输入域映射为输出范围的函数.任意数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射为可视化图形中使用的新值的便捷手段.D3的比例尺就是那 ...

  4. &和&&

    int j = 5,k = 3; if(!(j==k) && (j == 1 + k++ )) { } System.out.println(j); System.out.printl ...

  5. validate插件深入学习-04自定义验证方法

    自定义验证方法 jQuery.validator.addMethod(name,method,[,message]) name: 方法名 method: function(value,element, ...

  6. HTML转义字符大全

    ISO Latin-1字符集:  — 制表符Horizontal tab  — 换行Line feed  — 回车Carriage Return  — Space ! ! — 惊叹号Exclamati ...

  7. appium 常用API

    ''.appium api第二弹 锋利的python,这是初稿,2015/1/5 如有错误的地方,请同学们进行留言,我会及时予以修改,尽量整合一份ok的api 作者:Mads Spiral QQ:79 ...

  8. Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘

    Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...

  9. 个人评测——K米

    K米APP案例分析 关于 K米 -- 的案例分析 产品 K米的APP (全国KTV点歌,手机直播,互动,交友,预订)的Android客户端 第一部分 调研,评测 评测: 软件的bug,功能评测,黑箱测 ...

  10. jq变态全选vs原生变态全选

    <script> $(function(){ var num=0; $("#btn").on('click',function(){ if(this.checked){ ...