使用注解开发Spring

开始使用注解学习Spring的开发

  使用注解必须要导入AOP包,必须要添加context命名空间!!!实现注解支持

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

  0.在这里引出一个注解@Nullable

    正常实体类如果定义有参构造,那么在xml配置文件中必须要用相应的定义<constructor-arg name="name" value="chen"/>

    但是我们用@Nullable标签后,以为着这个属性可以是空,可以不用定义了

       

  1.接着上文,使用java注解进行制动装配使用@Autowired

    在pojo类中使用注解,在XML中就不用在<bean>标签加autowired属性了

   

    @Autowired是可以通过byName的方式来自动注入,也可以byType。

      如果没有名字相同的,然后通过byType的方法注入。当没有名字相同,Type属性有多个时候,自动装配失败

    <bean id="cat1" class="com.chen.pojo.Cat"/>   //byType找到它
    <bean id="dog1" class="com.chen.pojo.Dog"/>
    <bean id="dog" class="com.chen.pojo.Dog"/> //byName找到它

    使用了@Autowired注解,pojo实体类中属性的set方法都可以不用写了!不写也不会报错了!

    这里扩展一个java自带的注解@Resource也可以实现自动装配

  2.使用注解开发涉及的点

    使用注解必须要导入AOP包,必须要添加context命名空间!!!实现注解支持

    使用注解时候context标签开始扫描注解。扫描包里面的类,方法,属性是否有注解。当包下的某个类里面有注解实现bean到容器中,前面就有个小叶子

    必须要指定要扫描的包,这样Spring的相关注解才能生效!!!

    

  • bean使用注解  
    • @Component

     在实体类中使用这个注解,就相当于将这个实体类放到IOC容器中了

@Component
//类似于xml中<bean id="user" class="com.chen.pojo.User">
public class User { private String name; public String getName() { return name; } }
  • 衍生的注解

    因为我们在实际开发过程中,所有的类不全是实体类,所以根据不同的类(Dao层的类,Service层的类,Control层的类)衍生出了多个注解

    这些衍生注解的作用和@component的作用一样,都是将类放到容器中,方便我们在使用的过程中直接通过getBean使用

    dao层@Repository

    control层@Controller

    service层 @Service

  • 使用注解对属性注入
    •   @Value。可以给简单属性赋值

     @Value 可以放在属性的上面,也可以放在属性对应的Set()方法的上面

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class User {
    @Value("小陈") //类似于 <property name="name" value="小陈"/>
    private String name;

    public String getName() {
        return name;
    }
}
  • 自动装配
    •   上面写的就是注解自动装配
  • 作用域
    •   @Scope(value = "singleton")  定义这个bean的作用域
  • 小结  
    •   xml更加万能,维护简单方便
    •   注解不是自己的类用不了。(类似于xml配置中的 ref="别的类")
    •   最佳生效方式:  
      •   xml来管理bean
      •     注解来负责完成属性的注入

  我们在使用中一定要注意使用注解的前提条件:导包,context命名空间开始注解,3扫描对应的包

 

  

  

 

posted @ 2021-11-20 00:10  qwedfrgh  阅读(52)  评论(0)    收藏  举报