spring IOC(2016年)

1.注入:设值注入(property) 构造注入(constructor-arg);
2.bean的生命周期:定义(XML定义),初始化(context启动时加载bean),初始化,使用(bean容器中取出实例),销毁(bean容器停止时销毁由bean容器创建的实例)
初始化:

   1)实现InitializingBean接口中的方法;
   2)<bean init-method="init">
   3)<beans default-init-method>

销毁:

1)实现DisposableBean接口中的方法;
2)<bean destroy-method="init">
3)<beans default-destroy-method>

3.Aware类接口:获取相应的资源,对spring相应的资源进行操作,spring扩展的入口

1).ApplicationContextAware, 提供ApplicationContext,上下文信息
2).BeanNameAware,获取该类<bean id="">中的id值;
.......

4.Bean的自动装配(Autowiring):

<beans default-autowire="">  byName/byType/constructor(类型匹配)/no
<bean autowire=""> byName/byType/constructor(类型匹配)/no

5.Resource针对资源文件的统一接口(加载资源时用到的接口)

UrlResource, ClassPathResource, 
FileSystemResource, ServletContextResource, 
InputStreamResource, ByteArrayResource

ResourceLoader对Resource加载的一个接口,所有的ApplicationContext 都实现了该接口,即都可以加载Resource资源文件接口中定义了方法:Resource  getResource(String location);location:   "classpath:------",  "file:------",  "url:------"(没有成功,运行结果不存在,未查名原因)  "------"(直接依赖于ApplicationContext 的加载方式)

6.bean管理的注解实现:
1)引入并添加context标签定义

    <beans xmlns:context="http://www.springframework.org/schema/context"
        http://www.springframework.org/schema/context  
            http://www.springframework.org/schema/context/spring-context.xsd">

2)添加自动扫描标签:

<context:component-scan base-package=""/>

(包含了<context:annotation-config />)用于识别注册解析base-package包下的用注解标记(参考下面的一些类)的bean;

3)可以通过过滤器对注册行为修改

<context:component-scan>
            context:exclude-filter type="annotation" expression=""/>
            <context:include-filter type="annotation" expression=""/>
        </context:component-scan>

4)在自动注册中,bean名称由BeanNameGenerator生成;

   可以自定义命名规则,即实现BeanNameGenerator接口(必须包含一个无参的构造器)

并配置:

<context:component-scan base-package="" name-generator="org.example.MyNameGenerator"/>

5)在自动注册中,可以写注解@Scope表示bean的作用范围,也可以自定义scope, 通过实现接口ScopeMetadataResolver接口(无参的构造方法)
配置:

<context:component-scan base-package="" scope-resolver="org.example.MyScopeResolver"/>

6)详细注解:
a. @Component(相当于配置文件中的)
b. @Scope(作用域,默认是singleton)
c. @Required(适用于setter方法,不常用)
d. @Autowired(适用于属性,setter方法,构造方法)用于自动注入,@Autowired(required=false)防止找不到bean.
可以对集合进行注解。集合会自动放入当前ApplicationContext中的所有bean实例,
在集合元素的类上添加@Order可以在list中进行排序。或者实现Ordered接口
f. @Service(特定的Component,对service层的类进行注解);
d. @Repository(特定的Component,对数据访问层dao层的类进行注解)
g. @Qualifier(按类型自动装配可能多个bean实例的情况,可以使用该注解缩小范围,即指定唯一),
也可以用于指定单独的构造器参数或者方法参数 Qualifier(“beanImplOne”)
可用于注解集合类型变量
f.@Bean(name=” “,initMethod=” “,destroyMethod=” “)定义在方法上,并且该方法返回一个实例对象。
like:并且该类应该加上@Configuration注解。
并且该方法可以加@Scope注解,表示实例的范围
g.@ImprotResource(“classpath:config.xml”) , @Value(“ url"),@Value(" u r l " ) , @ V a l u e ( " {username}”), @Value(“${password}”)
config.xml中配置如下信息:

config.properties中是键值对的形式。

eg:

@Configuration
        @ImportResource("classpath:config.xml")
        public class StoreConfig {

            @Value("${jdbc.url}")
            private String url;

            @Value("${jdbc.username}")
            private String username;

            @Value("${jdbc.password}")
            private String password;

            @Bean
            public MyDriverManager myDriverManager() {
                return new MyDriverManager(url, username, password);
            }
        }

等价于

<beans>
    <bean calss="..Storeconfig"/>
            <bean class="MyDriverManager">
                <property name="url" value="${jdbc.url}">
                <property name="username" value="${jdbc.username}">
                <property name="password" value="${jdbc.password}">
            <bean>
                        </beans>

h.可以给类加上泛型进行加载指定类型的类。
i. 自定义Qualifier
j. JSR-250标准中的@Resource (name属性为bean的名称), 和 @Autowired一样
k.影响Servlet生命周期的注解(Annotion):@PostConstruct和@PreDestroy
@PostConstruct:初始化回调(Init()方法之前),
@PreDestroy:销毁回调(destroy方法之后)
l. @Inject(javax.inject.jar) = @Autowired
m.@Name = @Component 并且@Name可以注解setter参数上,在有多个相同实例对象是起作用
o. @Controller

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值