spring的IOC注解

Spring的IOC注解使用

第一步:

在配置文件中添加context的规范以及组件扫描

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd ">
    
    <!--使用IOC的注解,配置组件扫描-->
    <context:component-scan base-package="com.spring.daoImp"></context:component-scan>
</beans>
第二步:在实现类上添加注解@Component,在需要注入的属性上添加@Value
import com.spring.dao.UserDao;
import org.springframework.stereotype.Component;

@Component("userDao")//相当于<bean id="userDao" class="com.spring.daoImp.UserDaoImpl"></bean>
public class UserDaoImpl implements UserDao {

    private String name;
    public void say() {
        System.out.println("你好啊"+name);
    }
    //如果没有set方法,则将@Value添加在定义属性的语句上面
    @Value("张三")
    public void setName(String name){
        this.name = name;
    }
}
第三步:测试
public void test1(){
        //创建spring的工厂
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
        UserDao bean = (UserDao) context.getBean("userDao");
        bean.say();
        context.close();
    }

Spring的IOC的注解详解

@Component

作用:修饰一个类,将这个类交给Spring管理
这个注解有三个衍生注解
@Repository :Dao层
@Service :service层
@Controller :web层

属性注入的注解
  • 普通属性
    @Value
  • 对象类型的属性
    @Autowired //设置对象类型的属性值,按照类型完成属性注入
    @Autowired与@Qualifier(value="") //按照名称来完成属性注入@Resource(name="")//按照名称来完成属性注入,该属性不属于spring框架
bean生命周期的注解
  • 初始化注解
    @PostConstruct
  • 销毁注解
    @PreDestroy
    例:
import com.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component("userDao")
public class UserDaoImpl implements UserDao {

    private String name;
    public void say() {
        System.out.println("你好啊"+name);
    }

    @PostConstruct  //相当于init-method
    public void start(){
        System.out.println("bean被创建");
    }

    @PreDestroy     //相当于destroy-method
    public void end(){
        System.out.println("bean被销毁");
    }

    @Value("张三")
    public void setName(String name){
        this.name = name;
    }
}

bean的作用范围的注解

@Scope
值:

  • singleton:单例模式
  • prototype:多例

xml配置与注解配置的总结比较

基于XML配置基于注解配置
Bean定义<bean id="" class="" />@Component@Repository@Service@Controller
Bean名称通过id或name指定@Component(“userDao”)
Bean注入<property>或者通过p命名空间@Autowired按类型注入@Qualifier按名称注入
生命过程init-method destroy-method@PostConstruct初始化 @PreDestroy销毁
Bean作用范围scope 值:singleton单例 prototype多例@Scope,值相同

context:component-scan和context:annotation-config的区别

	<!--扫描指定包下的类上的注解,并注册激活bean-->
	<context:component-scan base-package="com.spring.daoImp"></context:component-scan>
	<!--对于已经在spring容器中注册的bean进行激活,激活后的bean可以使用类中的注解,比如Di注入的注解,bean生命周期的注解等-->
    <context:annotation-config></context:annotation-config>

总体上来说context:component-scan既可以注册,也可以激活,而context:annotation-config只能激活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值