spring实战4学习笔记--基础一

一、 Spring的装配bean的三种方式: 1、xml显示配置2、java中显示的配置 3、隐式的bean发现和自动装配

二、 自动化装配bean方式:

   1、组件扫描:Spring会自动发现应用上下文的创建的bean。

   a、开启组件扫描的方式:注解@ComponentScan 或 xml配置<context:component-scan>。

   b、@Component : 声明创建bean,为bean命名。(@name 功能相同)

  c、@ComponentScan设置组件扫描的基础包;basePackage,basePackageClasses。

 2、自动装配:Spring自动满足bean之间的依赖。

  a、注解@Autowire, 可以在构造器,setter方法等类的任何方法上。属性设置required=false ,需要在代码进行null检查。

  b、@Inject 用法和autowire基本相同。

三、 java代码装配bean :1 创建配置类@Configuration ;2 使用@Bean 。  java装配bean 赋予bean生成方式的灵活性:如 多个类型的bean生成返回。 

四、 Spring bean 注入方式:

1 使用java configer 方式配置 @Bean注解(带有该注解的方法可以采用任何必要的java功能来产生bean 的实例,构造器和setter方法只是简单的两个java方式)。

2 xml配置: 1 使用<constructor-arg>: 便于接收集合参数<set>和<list>

   2 使用c-命名空间方式

  3 P-命名空间、util-命名空间。

混合配置:xml和javaConfig配置互相引用。

  javaConfig导入:配置类(@Import(Person.class))和xml方式( @importResource("classpath:pe-config.xml")

  xml导入:配置类(<bean class="cn.spring.Preson">)和 xml方式(<import resource="pe-config.xml">)

五、环境和Profile: 1、 java 配置方式: @Configuration xml方式:<beans profile = "dev">......</beans>

     @Profile("dev")

  2、激活profile 1 作为DispatcherServlet的初始化参数。 2 web的上下文,等等。

     3、 条件化配置bean: @Conditional, @Profile(基于@Conditional 和Condition)

   4、 处理自动装配歧义: 1 标示首选bean(@Primary); 2 限定自动装配的bean(@Qualifier("iceCream"))

       3 使用自定义:更具特征性和描述性术语。

六、bean的作用域

  单例:整个应用只创建一个bean实例。(默认)

  原型:每次注入或通过Spring上下文获取的时候都新建一个bean实例。(@Scope(ComfigurableBeanFactory.SCOPE_PROTOTYPE),或@Scope("prototype"),第一种更安全)

  会话: web应用中,为每个会话创建一个bean实例。

  请求: web应用中,为每个请求创建一个bean实例。

问题1:实现单例中注入会话中的bean。

{ 作用域代理能够延迟注入请求和会话作用域的bean}

   1、java配置方式:@Scope(WebApplicationContext.SCOPE_SESSION,

     proxyMode=ScopedProxyMode.IINTERFACES(基于接口的代理)或proxyMode=ScopedProxyMode.TARGET_CLASS基于类的代理(cglib)) ;

      2、xml方式(需要在xml配置aop的名称空间):

       <bean id="person" class="cn.person" scope="session">

        <aop:scope-proxy proxy-targer-class="fase">

      <bean>

默认使用cglib代理, 配置proxy-targer-class="fase"则使用接口代

七、运行时的值注入

 1 Spring提供两种运行时求值方式: 1 属性占位符 ; 2 Spring表达式语言(SpEL)。

 2 注入外部值:

 1 声明属性源,并通过Spring的Environment来检索属性。

   使用@PropertySource注解:如 @PropertySource("classpath:/com/spring/app/properties"),属性文件会加载

  到Spring的Environment中,之后可以从这里检索属性。

  Spring Environment : 1、 String getProperty( String key)

   2、 String getProperty(String key, String defaultValue)

   3 、T getProperty(String key, Class<T> type)

   4、T getProperty(String key, Class<T> type, T defaultValue)

   5、 getRequiredProperty(), 属性必须定义, 否则抛异常。

  6、 检查属性是否存在: containsProperty()。

7、将属性解析为类 : getPropertyAsClass()。

    8、String [ ] getActiveProfiles( );返回激活profile名称数组。

   9、 String [ ] getDefaultProfiles( ): 返回默认Profile名称数组。

   10 、 boolean acceptProfiles( String ... profiles ) : 判断environment 是否支持给定的profile。

 a、Spring占位符 使用: 1 使用“${ . . . }”; 2 使用@Value注解 。

 使用占位符:必须要配置PropertyPlaceholderConfigurer bean或 PropertySourcesPlaceholderConfigurer bean;

   推荐使用第二个,因为它能基于spring Environment 及其属性源来解析占位符。

  b、Spring 语言表达式: SpEL要放到“#{ . . . }”中

猜你喜欢

转载自blog.csdn.net/u010009709/article/details/79151369
今日推荐