关闭

spring 注解

标签: springautowiredbeanclasssessionprototype
427人阅读 评论(0) 收藏 举报
分类:

注解配置

<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.");
}







0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27725次
    • 积分:496
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:3篇
    • 译文:1篇
    • 评论:11条
    文章分类
    最新评论