spring-春天的故事2
来源:互联网 发布:鸡啄米 mfc编程入门 编辑:程序博客网 时间:2024/05/01 06:53
Bean作用域
使用scope设置bean的作用域,常用的两种设置为prototype singleton:
-singleton作用域:如果作用域设置为 singleton,那么 Spring IoC 容器刚好创建一个由该 bean 定义的对象的实例。该单一实例将存储在这种单例 bean 的高速缓存中,以及针对该 bean 的所有后续的请求和引用都返回缓存对象。
默认作用域是始终是 singleton,但是当仅仅需要 bean 的一个实例时,你可以在 bean 的配置文件中设置作用域的属性为 singleton
-prototype 作用域:如果作用域设置为 prototype,那么每次特定的 bean 发出请求时 Spring IoC 容器就创建对象的新的 Bean 实例。一般来说,满状态的 bean 使用 prototype 作用域和没有状态的 bean 使用 singleton 作用域。
Bean的生命周期
为了定义安装和拆卸一个 bean,我们只要声明带有 init-method 和/或 destroy-method 参数的 。init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。
Bean 后置处理器
BeanPostProcessor 可以对 bean(或对象)实例进行操作,这意味着 Spring IoC 容器实例化一个 bean 实例,然后 BeanPostProcessor 接口进行它们的工作。
ApplicationContext 会自动检测由 BeanPostProcessor 接口的实现定义的 bean,注册这些 bean 为后置处理器,然后通过在容器中创建 bean,在适当的时候调用它。
Bean自动装配
-byName:这种模式由属性名称指定自动装配。Spring 容器看作 beans,在 XML 配置文件中 beans 的 auto-wire 属性设置为 byName。然后,它尝试将它的属性与配置文件中定义为相同名称的 beans 进行匹配和连接。如果找到匹配项,它将注入这些 beans。
-byType:这种模式由属性类型指定自动装配。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 byType。然后,如果它的 type 恰好与配置文件中 beans 名称中的一个相匹配,它将尝试匹配和连接它的属性。如果找到匹配项,它将注入这些 beans,否则,装载改依赖对象为null。
-constructor:这种模式与 byType 非常相似,但它应用于构造器参数。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 constructor。然后,它尝试把它的构造函数的参数与配置文件中 beans 名称中的一个进行匹配和连线。如果找到匹配项,它会注入这些 bean。
注解配置
使用注解进行依赖配置的管理,可以将注解分为两类,第一类用于属性装配,第二类用于类的注册。
-属性装配
@Required 、@Autowired和@Resource
-@Required 注释:应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。
-@Autowired注释:
1、@Autowired默认按照类型匹配的方式(byType)进行注入
2、@Autowired注解可以用于成员变量、setter方法、构造器函数等
3、使用@Autowired注解须有且仅有一个与之匹配的Bean,当找不到匹配的 Bean 或者存在多个匹配的Bean时,Spring 容器将抛出异常
4、Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称。@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了
-@Resource注释:
1、@Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,@Resource 默认按 byName 自动注入罢了
2、@Resource 有两个属性,分别是 name 和 type,Spring 将 @Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。
-类的注册
需要将某个类在IoC容器注册时,可以使用@Component、@Repository、@Service和 @Controller
-@Component
1、@Component是所有受Spring管理组件的通用形式,而@Repository、@Service和 @Controller则是@Component的细化, 用来表示更具体的用例(分别对应了持久化层、服务层和表现层)
2、使用@Component注解定义的Bean,默认的名称(id)是小写开头的非限定类名。如UserDao类定义的Bean名称就是userDao。你也可以指定Bean的名称: @Component(“abc”)
//指定需要扫描的类包,类包及其递归子包中所有的类使用的注解都会被处理。<context:component-scan base-package="com.alibaba" />
使用外部属性文件
使用场景:配置数据源,数据库等信息时,把属性值写在配置文件中,在spring配置文件中创建Bean时配置属性使用${属性名}进行配置。
//例子< context:property-placeholder location="classpath:db.properties" />
spEL
spring表达式语言,使用语法#{},可以使用其引用其他的bean及bean的属性,引用静态类的属性,使用运算符,正则表达式等
- spring-春天的故事2
- Spring-春天的故事1
- Spring-AOP-春天的故事3
- Spring-AOP-春天的故事4
- Spring-JdbcTemplate-春天的故事5
- 春天的故事
- 春天的故事
- 春天的故事-Spring Security3十五日研究
- 发生在春天的故事
- Spring程序员的春天
- spring带来的春天
- 我的春天——spring
- Spring 2.0冬天里的春天特性
- Spring 2.0寒冬里的“春天”特性
- Spring之开源框架的春天
- Spring系列之J2EE开发的春天
- 春天里的Spring(Spring 1.2 rc1 发布了)
- 找春天春天的飞鸽传书
- 三星手机拍照图片自动旋解决方法
- Windows下Android Studio点击运行,找不到夜神模拟器。
- 【转载】hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等
- Java中伪造referer来获取数据
- MetaLink使用
- spring-春天的故事2
- 在vue中实现点击选择框阻止弹出层消失
- 自己开发zk directory browser
- android MVC与MVP总结,加MVP 实现步骤:
- Ubuntu安装PyCharm
- C语言接收消息乱码问题
- SIM PICS
- JAVA中的反射机制
- js实现网页验证码功能