1.bean的作用域就是描述一个对象在容器中的作用范围,spring的bean的作用域有五种
作用域 | 描述 |
singleton | 单列模式创建,在ioc容器中只会创建一次 |
prototype | 原型模式创建,每次取得的对象都会重新创建,但是需要进行配置 |
request | 只有用户发送请求之后才会创建,请求结束之后bean就会被销毁了,(需要web的支持) |
session | 只有用户第一次访问服务器的时候才会创建,session销毁 之后就会随之销毁 |
global session | 和session类似,但需要Portlet容器的支持。使用scope属性进行配置 |
1、singleto 单列模式创建 ioc容器中只会创建一次所以模拟证明
1、在resource文件下创建.xml配置文件 创建bean
使用test创建启动类 创建两个applicationContext 对象查看结果 猜测 如果singleton是单列模式只在ioc容器中创建一次 我可以判断出 无论我们创建多少次 bean对象 使用.getName()方法获取
多少次 所得到的结果 都应该只有一个。
2、prototype 原型创建模式,每次取得对象都会重新创建 但是需要进行配置;
根据结果我们可以判断 prototype每次创建对象 都会重新创建bean放入IOC容器 因为第一次 我们使用setter方法注入了Name值 而在第二次创建 对象后 getName,则返回空说明 第二次创建的bean对象其实已经重新创建。他跟 singleto 正好相反。
2、常见的注解(学习笔记)
@Component("empService") 表示要创建一个bean到容器中(建议在dao层或者其他组件中使用) 默认的名字就是类名的首先字母小写
@Scope("prototype") 表示使用多列形式创建bean(每次获取对象都会重新创建bean)
@Lazy 懒加载
@Service 创建一个bean(建议使用在控制层中)
@Controller 创建一个bean(建议 在控制层中使用,表示一个控制器)
@Repository 创建一个bean(建议在dao层使用持久化使用)
@Configuration 创建一个bean(建议在配置类上使用)
@Autowired 主动注入 :在容器中查找对应的bean赋值给对应的属性,如果容器中没有查找到就抛出异常
@Bean 在方法上使用该注解 会将方法创建的对象放入Spring容器中
@Transactional 表示该方法要使用事务
@EnableTransactionManagement 开启事务代理
@EnableAspectJAutoproxy 开启动态代理支持(自己定义切面时候需要打开 )