【Spring】【一】基本注解以及小实例


基本注解:

1.标注 bean类 
————————————————————
@Component:标准一个普通的spring Bean类。
@Controller:标注一个控制器组件类。
@Service:标注一个业务逻辑组件类。
@Repository:标注一个DAO组件类。
————————————————————
2. 作用域
————————————————————
@Scope :prototype、request、session、global session
————————————————————
3.自动装配
————————————————————
 @Autowired
————————————————————

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、 
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例  启动就加载
@Async异步方法调用

______________________________________________________________________
bean.xml
搜索 某个包下的所有类
 <context:component-scan base-package="com.kn.beanScope" />

______________________________________________________________________


OH.java

注意@Component 注解,即 标注一个普通的bean 
package com.kn.beanScope;

import org.springframework.stereotype.Component;

@Component
public class OH {
    public void sout(){
        System.out.println("???? THIS IS OH date!");
    }
}

BeanScope.java
@Scope 设定作用域 为 每次新建自身实例
package com.kn.beanScope;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

@Component
@Scope("prototype")
public class BeanScope {
    @Autowired
    private OH oh;
    private String beanname;
    public void say(){
        System.out.println("BeanScope say :"+this.hashCode()+"from "+beanname);
        oh.sout();
    }
    public  void init(){
        beanname="FFF";
    }
    public  void destroy(){
        beanname="GGGG";
        say();
    }


}

测试类:
UserAxeTest.java

        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean_Zj.xml");

        BeanScope beanScope=ctx.getBean("beanScope",BeanScope.class);
        beanScope.init();
        beanScope.say();
        BeanScope beanScope1=ctx.getBean("beanScope",BeanScope.class);
        beanScope1.say();
获取两次 beanScope 然后 第一次先调用init 再say,第二次 直接say

结果:

BeanScope say :1873859565from FFF
???? THIS IS OH date!
BeanScope say :1843289228from null
???? THIS IS OH date!

可以看出,是两个不同的实例。
第一次成功初始化,from FFF 第二次则为null。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值