Spring知识梳理(2)--bean管理

spring的bean管理

*****spring的bean管理(xml方式)*****
        bean实例化【在spring里面,通过配置文件创建对象】   三种方式实现
            1:在类中,使用类的无参构造创建(重点)        
            2:使用静态工厂创建Bean2实例化对象
                    在类中创建静态方法,返回类对象
            3:使用实例工厂创建Bean3实例化对象
                    创建一个不是静态的方法,返回类对象

    《Bean标签常用属性》
            1--id属性: 
                   起名称   不能有中文或特殊符号(下划线也不行)   根据id值得到配置对象
            2--class属性: 
                   创建对象所在类的全路径  
            3--name属性:
                   功能和id属性是一样的  (但这个属性值里边可以包含特殊符号)、、
            4--scope属性:表示bean的作用域范围
                   singleton:默认值  单例--对象只会创建一次
                   prototype:多例
                   request、session、globalSession

    《属性的注入介绍》   
            1.创建对象的时候 ,给类的属性赋上值
            2.在Java代码中给对象属性赋值的三种方式
                (1)使用有参构造器
                (2)set方法注入
                (3)接口注入
            3.在spring框架中,支持前两种注入方式 
                (1)使用有参方式,进行属性注入
                (2)使用set方法,进行属性注入-重点

            <使用set方法注入对象类型属性> 
                1.创建service类 和 dao类
                       在UserService里得到 UserDao对象
                2.具体实现过程
                    (1)在UserService里面把UserDao作为 属性的类型
                    (2)生成 UserDao 类型属性的set方法
                    (3)在配置文件中 进行注入关系的配置

            <使用set方法  P名称空间  注入对象类型属性>
                第一步:xml文件配置 xmlns:p="http://www.springframework.org/schema/p"
                第二步:<bean name="person" class="com.mybag.property.Person" p:pname="Eva"></bean>

            <使用set方法  注入复杂类型属性>
                1.数组
                2.list集合
                3.map集合
                4.properties

《IOC和DI的区别》
1. IOC 控制反转 把对象的创建交给spring进行配置
2. DI 依赖注入 给类中的属性赋值
3. 关系:依赖注入不能单独存在,需要在ioc基础之上完成操作

《Spring整合web项目原理》
1.加载核心配置文件
//加载spring配置文件 根据配置 创建对象
ApplicationContext context=new ClassPathXmlApplicationContext(“bean1.xml”);
出现的问题:每次实现 都需要new一个bean1.xml配置文件对象 效率很低
2.实现思想:
把加载配置文件和创建对象的过程,在服务器启动的时候就完成
3.底层原理:
3.1使用到的两个技术:
(1) ServletContext对象
(2) 监听器
3.2具体使用:
-在启动服务器的时候,为每个项目创建一个ServletContext对象【s对象】
-在s对象创建的时候,使用监听器可以监听到它 是在什么时候创建的
01. 当监听到s对象创建的时候 ,
此时,就会加载spring配置文件
并把配置文件中 所配置的相应对象 给创建出来
02. 把相应的对象 放到ServletContext域对象里面(setAttribute方法)
03. 当我们再获取这个相应对象的时候 就可以从ServletContext域中得到了(getAttribute方法)

*****spring的bean管理(注解annotation方式)*****
    《注解》
        1.代码里边的特殊标记
            @Test
            @Override
        2.写法:
            @注解名称(属性名称=属性值)
        3.可以使用在类、方法、属性上面
            看具体代码


    《Spring注解开发准备工作》
        1.导入基本jar包
        2.创建类、方法
        3.创建spring配置文件bean1.xml,引入约束
        4.在配置文件中开启注解扫描*


    《注解方式创建对象》
        1.在创建对象的类  上面  使用@Component注解      来创建出User对象
                @Component(value="user")---value其实可以省略不写
        2.创建对象有四个注解
            spring中提供@Component的三个衍生注解(功能目前来讲是一致的,都是用来创建对象)
                @Controller    --WEB层  *
                @Service       --业务层   *
                @Respository   --持久层
            这三个注解是为了让标注类本身的用途清晰,spring在后续版本会对其增强
        3.创建对象 
                   单例【默认】
                    @Component(value="user") 
                    @Scope(value="singleton")
                   多例
                    @Component(value="user") 
                    @Scope(value="prototype")

    《注解方式注入属性》
        1.注入对象类型属性 @Autowired
             通过UsetDao这个类名 找到这个类 对应的对象   
             与@Component("userDao")中的userDao没有关系
             这也是它的一个缺点,因为它的指向 不是很清晰
            (1)创建UserService类 并生成对象
                 @Service("userService")
            (2)创建UserDao类 并生成对象
                 @Component("userDao")
            (3)在UserService类中 
                   通过 @Autowired 自动装配    
                   得到UsetDao对象
                   完成对象类型属性的注入

        2.注入对象类型属性@Resource  * 
            优点:指向很明确    
                @Resource(name="userDao")  name属性 
                与@Component("userDao")中的userDao高度匹配

    《配置文件和注解混合使用》
        1.在配置文件中配置对象
        2.用@Resource注解方式给对象注入对象类型属性
                @Resource(name="bookDao") 
                与<bean id="bookDao" > 高度匹配 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值