spring 注解

本文深入探讨了Spring框架中的注解配置、组件声明、作用范围定义、注入方式、初始化方法等核心内容,包括@Component、@Repository、@Service、@Controller注解的用途,以及@Autowired、@Resource、@Qualifier的使用场景。同时介绍了如何通过@PostConstruct和@PreDestroy方法管理Bean生命周期。
摘要由CSDN通过智能技术生成

注解配置

<context:annotation-config/>和
<context:aomponent-scan base-package="需要实现注入的类所在包"/>
<context:annotationconfig/>隐式地向spring容器注册
  AutowiredAnnotationBeanPostProcessor、
CommonAnnotationBeanPostProcessor、
PerSistenceAnnotationBeanPostProcessor、
RequiredAnnotationBeanPostProcessor、
 这四个BeanPostProcessor

声明bean

@Component 泛指组件

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Repository 持久层

持久层组件,用户标注数据库访问组件。(例如:Dao组件)

@Service 业务层

业务层组件。(例如:Service组件)

@Controller 控制层

控制层组件。(例如:struts的Action)
例子:
@Service
public class MyService implements IMyService{
}
@Repository("myDao")
public class MyDao implements IMyDao{
}

@Scope  定义bean作用范围

1、singleton :定义bean的范围为每个Spring容器一个实例(默认值)
2、Prototype :允许 多次实例化(使用一次创建一次实例)
3、request :定义bean的范围是HTTP请求。只有在使用web能力的 Spring上下文是才有效
4、session :定义bean的范围是HTTP会话。只有在使用web能力的 Spring上下文是才有效
5、global-session :定义bean的范围是全局HTTP会话。只有在portlet上下文中才有效
demo
@Scope("session")  
@Component()  
public class UserSessionBean implements Serializable {  
    

注入bean

@Autowired (建议使用@Resource)

可以对成员变量、方法和构造函数进行标注,完成自动装配的工作。
(注:要使@Autowired能够工作,需要在配置文件中加入以下代码)
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
例子:
public class UserServiceImpl implements UserService {  
    @Autowired  
    private UserDao userDao;  
    ...  
}  

public class UserServiceImpl implements UserService {  
    private UserDao userDao;  
    @Autowired  
    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
    ...  
}  

@Qualifier 制定注入bean的名称

@Qualifier只能和@Autowired结合使用,是对@Autowired有益的补充。
例子:
@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
	this.userDao = userDao;
}

@Resource  代替Spring的@Autowired注解

@Resource的作用相当于@Autowired,只不过@Autowired按照byType自动注入,而@Resource默认按照byName自动注入。
@Resource两个属性:1、name   2、type 默认byName自动注入策略。

@PostConstruct 

bean初始化之后被Spring容器执行。
典型应用:往bean中注入父类中的属性,而又无法重写父类的属性或者和属性的setter方法。
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
	private SessionFactory mySessionFacotry;
	@Resource
	public void setMySessionFacotry(SessionFactory sessionFacotry) {
		this.mySessionFacotry = sessionFacotry;
	}
	@PostConstruct
	public void injectSessionFactory() {
		super.setSessionFactory(mySessionFacotry);
	}
}

@PreDestroy

Bean初始化之后被Spring容器执行。
例子:
// 相当于在XML中配置了destroy-method
@PreDestroy
public void destory() {
    System.out.println("destory.");
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值