Spring中的bean
bean:翻译成中文为“豆子,豆荚”。豆子一般都有外壳,类比到Java中,可以把bean看成一个“黑盒子”,我们不需要知道它内部是怎么实现的,只需要知道它的功能即可。(bean可以看成就是一类。)
通过Spring创建对象的几种方式:
• applicationContext
○ ClassPathXmlApplicationContext(如果spring的配置文件在项目的类路径下,可以使用该类创建容器)
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //从spring中获取对象
○ FileSystemXmlApplicationContext(如果spring的配置文件不在类路径下,配置文件可以在任意位置,可以使用该类来创建容器)
○ AnnotationConfigApplicationContext(如果使用注解配置spring的时候,需要使用该实现类来创建容器)
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
• BeanFactory接口
基本上都用applicationContext,因为用BeanFactory的话,事务的管理和AOP都将失效。(applicationContext多消耗点资源,不过,现在的电脑都无所谓了)
Bean的装配:Spring ioC容器把对象创建好并传递给使用者的过程。
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //从spring中获取对象 StudentService studentService = (StudentService) context.getBean("studentService"); studentService.study();
Bean的三种实例化方式(一般使用默认方式):
• 默认方式:这种方式spring ioc容器会调用bean的无参构造方法来创建对象,所以此时务必要保证这些bean有无参构造方法。
• 实例工厂:这里需要自己定义一个工厂类,在该类中的方法都是非静态的。
• 静态工厂:这里需要自定一个工厂类,里面的方法是static修饰的
Bean的作用域:
使用spring ioc容器为我们创建对象的时候,可以设定该对象的作用域,默认是单例的。
• singleton: 单态模式。即在一个Spring ioc容器中,使用 singleton 定义的 Bean 是单例的,只有一个实例。默认为单例的。
• prototype: 原型模式。即每次使用 getBean 方法获取的同一个bean的实例都是一个新的实例。
• request:对于每次 HTTP 请求,都将会产生一个不同的 Bean 实例。
• session:对于每个不同的 HTTP session,都将产生一个不同的 Bean 实例。
• application:在一个web应用中会产生一个bean实例,就相当于在一个ServletContext中只有该bean的实例。
• websocket:在一个websocket中会产生一个bean实例。
注意:上面的request,session,application,websocket只在web应用中有效。
Bean后处理器:
实现了BeanPostProcessor接口的类被称为bean后处理器,在bean中init方法前和之 后会自动调用bean后处理器的两个方法,我们可以通过在这两个方法中编写代码来增强或扩展一些功能。

浙公网安备 33010602011771号