spring使用注解开发

在Spring4之后,要使用注解开发,必须要保证aop的包导入了
在这里插入图片描述

 使用注解需要导入约束,配置注解的支持!

	<?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
		        https://www.springframework.org/schema/beans/spring-beans.xsd
		        http://www.springframework.org/schema/context
		        https://www.springframework.org/schema/context/spring-context.xsd">
			
			<!--开启注解的支持    -->
	        <context:annotation-config/>
	</beans>
  1. bean

  2. 属性如何注入

//等价于<bean id="user" class="com.pojo.User"/>
//@Component 组件

@Component
public class User {

    //相当于  <property name="name" value="小狗"/>
    @Value("小狗")
    public String name;
}

       3.衍生的注解
     @Component有几个衍生注解,我们在web开发中,会按照mvc三层架构分层!

dao 【@Repository】 //这个注解习惯用于dao层
service 【@Service】  //这个注解习惯用于service层
controller 【@Controller】  //这个注解习惯用于controller层

      这四个注解功能都是一样的,都是代表将某个类注册到Spring中,装配变成一个Bean

4.自动装配

- @Autowired:自动装配通过类型,名字。如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier(value = "xxx")去配置。
- @Nullable 字段标记了了这个注解,说明这个字段可以为null;
- @Resource:自动装配通过名字,类型。

5.作用域

@Component
@Scope("singleton")
public class User {

    //相当于  <property name="name" value="白莲"/>
    @Value("白莲")
    public String name;
}

6.小结
xml与注解:
xml更加万能,适用于任何场合!维护简单方便
注解不是自己类使用不了,维护相队复杂!
xml与注解最佳实践:
xml用来管理bean;
注解只负责完成属性的注入;
我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持

    <!--指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com"/>
    <!--开启注解的支持    -->
    <context:annotation-config/>

若没有指定正确的包则会报以下错误

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:805)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1278)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1114)
	at MyTest.main(MyTest.java:9)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值