spring的IOC注解开发

今天了解到有关spring的注解开发,有极个别还不太记,总体记录下,以便后续开发查看,可能不太完整,后续如有补充,会继续添加。

1、 组件 @Component()  
 * 相当于 <bean name="userDao" class="java类的class路径"> 放在java类的上方,在所有的java类(web层,service层,dao层都可以使用) 但不推荐使用,开发中主要使用以下三个衍生注解

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

2、组件@Component()下有三个衍生的注解    功能一样
 * @Controller()  web层 (表现层)
 * @service() service层(业务层)
 * @Repository()  Dao层 (数据访问层)

()内参数有俩种写法,value=“xxx”或者“xxx”,value可以省略不写

@Repository("userDao")
public class UserDaoImpl implements UserDao {
	
	public void save() {
		
		System.out.println("UserDaoImpl执行");
	}
}

@Repository("userDao")注解是,让Spring创建一个name叫"userDao"的UserDaoImpl实例。

3、属性注入的注解

普通属性注解  @Value()   就是给属性内注入值

 

    @Value("张三")
	private String name;

给字段name赋值 ‘张三’。

对象类型的属性注解 @Autowired  设置对象属性的值,但是通过对象的类型进行属性注入

我们一般都是按照名称进行使用开发的,如果需要,就必须让 @Autowired  和 @Qualifier 俩个注解一起配合使用

    @Autowired	
	@Qualifier(value="userDao")
	private UserDao userDao;

就之前创建的UserDaoImpl实例对象给userDao属性注入 value内2中的值

但一般常用 @Resource() 注解,最后实现的效果是一样的,下面代码中name与上述一致

@Resource(name="userDao")
	private UserDao userDao;

4、Bean的作用范围 @Scope()

()内属性:
singleton 单例模式,全局有且仅有一个实例
prototype 原型模式(多例),每次获取Bean的时候会有一个新的实例
request 
session
global session

主要常见的也就单例模式和多例模式俩种,默认是单例模式,也就是 singleton 属性

 

以下是在另一篇博客《Spring系列之Spring常用注解总结》看到的所有注解汇总,标红的部分是常用常见的部分

-----------------------------------------------------------------------------------------------------

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、 
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例  启动就加载
@Async异步方法调用

-------------------------------------------------------------------------------------------------------

当前,注解开发的前提是需要再applicationContext.xml 下开启自动扫描功能

配置如下

<?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">

	<!-- 注解开发配置   开启自动扫描   base-package 是包名,即扫描当前包下注解 -->
	<context:component-scan base-package="com.heima.demo1"></context:component-scan>

</beans>

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值