Spring原始注解(详解)

0. 图文解析

1. @Component

xml中的< bean >标签(UserServiceImpl类的对象)

<bean id="userService" class="com.jd.service.impl.UserServiceImpl"/>

用注解代替

@Component("userService")
public class UserServiceImpl {
}

解析:只需要在相应的类的上边写上@Component(“userService”),即可代替xml中的bean标签(双引号中的userService为bean标签中的id值)

2. @Controller @Service @Repository

解析:与@Component的使用方法相同,只不过@Controller使用在web层,@Service使用在service层,@Repository使用在dao层,使注解的可读性更强

3. @Autowired @Qualifier

xml中的< bean >标签(UserServiceImpl类中注入了id为userDao的bean标签所指定的UserDaoImpl类)

<!--UserDaoImpl类-->
<bean id="userDao" class="com.jd.dao.impl.UserDaoImpl" ></bean>
<!--UserServiceImpl类-->
<bean id="userService" class="com.jd.service.impl.UserServiceImpl">
	<property name="userDao" ref="userDao"></property>
</bean>

用注解代替

public class UserServiceImpl{
    //<property name="userDao" ref="userDao"></property>
    @Autowired//按照数据类型从Spring容器中进行匹配
    @Qualifier("userDao")//按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
    private UserDao userDao;
    /*public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }*/ 
}

解析:在UserServiceImpl类的userDao变量上边直接添加@Autowired和@Qualifier(“userDao”)
@Autowired 是按照数据类型从Spring容器中进行匹配
@Qualifier(“userDao”) 是按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
因为使用注解,所以不在需要使用set方法注入了,所以set方法可以省去

4. @Resource

解析:@Resource = @Autowired + @Qualifier

例:以3.@Autowired @Qualifier中的代码为例,可以写成如下的代码

public class UserServiceImpl{
    //<property name="userDao" ref="userDao"></property>
    //@Autowired//按照数据类型从Spring容器中进行匹配
    //@Qualifier("userDao")//按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
    @Resource(name="userDao")
    private UserDao userDao;
    /*public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }*/ 
}

5. @Value

1.给driver赋值abc

public class UserServiceImpl implements UserService {
    @Value("abc")
    private String driver;
}

2.给driver赋值引用

  • 引用jdbc.properties中的driverClassName的值赋值给driver
public class UserServiceImpl implements UserService {
    @Value("${jdbc.driverClassName}")
    private String driver;
}
  • applicationContext.xml中导入了jdbc.properties
<context:property-placeholder location="jdbc.properties"></context:property-placeholder>

在这里插入图片描述

  • jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver

6.@Scope

使用方法:直接放在类的上边
作用:与bean标签的scope属性作用相同

@Scope("singleton")
public class UserServiceImpl  {
}
@Scope("prototype")
public class UserServiceImpl  {
}

7. @PostConstruct @PreDestroy

使用方法:放在相应方法上边
@PostConstruct相当于bean标签中的init-method
@PreDestroy相当于bean标签中的destroy-method


public class UserServiceImpl  {
	@PostConstruct
    public void init(){
        System.out.println("Service初始化方法");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("Service对象销毁方法");
    }
}

8. 组件扫描

使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。

注解的组件扫描

<context:component-scan base-package="com.jd"></context:component-scan>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值