Spring 框架总结(四) :基于注解的依赖注入

本文详细介绍了Spring框架中基于XML配置文件的依赖注入方法,包括如何通过@Component、@Service、@Repository及@Controller等注解实现自动装配,同时讲解了@Bean的作用域、生命周期管理以及@PostConstruct和@PreDestroy的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于xml配置文件的依赖注入

首先更改xml文件:

<context:component-scan base-package="sdibt.fly"></context:component-scan>

定义包的扫描范围,sdibt.fly包下的类如果打了@Controller、@Service、@Repository、@Component注解,这个类就好比在xml配置文件下配置了bean标签

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="sdibt.fly"></context:component-scan>

</beans>

四种注解方式的却别:

1.@Controller作用在Controller层

2.@Service作用在Service层

3.@Repository作用在Dao层

4.@Component作用在普通的pojo对象

Action:action类上需要的注解是@Controller,@Autowired打在属性或者set方法上,默认是是根据类型自动组装

package sdibt.fly.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import sdibt.fly.service.UserService;
@Controller
public class UserAction {
	//默认按照类型自动装配
	@Autowired
	private UserService userService;	
	
	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public void addUser(){
		userService.addUser();
	}
}

Service:@Autowired

package sdibt.fly.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import sdibt.fly.dao.UserDao;
@Service
public class UserService {
	@Autowired
	private UserDao userDao;

	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}


	public void addUser(){
		userDao.addUser();
	}
}

dao:@Repository

package sdibt.fly.dao;

import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
	public void addUser(){
		System.out.println("addUser");
	}
}

除了使用@Autowired,还可以使用@Resource,默认是先按照名字自动装配,如果找不到对应的名字,就会按照类型自动装配

--定义Bean的作用域和生命过程

@Scope("prototype")

值有:singleton,prototype,session,request,session,globalSession

@PostConstruct 

相当于init-method,使用在方法上,当Bean初始化时执行。

@PreDestroy 

相当于destory-method,使用在方法上,当Bean销毁时执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值