信息发布→ 登录 注册 退出

Java Spring的使用注解开发详解

发布时间:2026-01-11

点击量:
目录
  • 使用注解开发
    • 1.bean
    • 2.属性如何注入
    • 3.衍生的注解
    • 4.自动装配
    • 5.作用域
    • 6.小结
  • 代码show
    • 1.新建一个模块:
    • 2.新建pojo包及类
    • 3.新建dao包及类
    • 4.新建service包及类
    • 5.新建controller包及类
    • 6.新建配置文件applicationContext.xml
    • 7.测试
  • 彩蛋
    • 总结

      使用注解开发

      在Spring4之后,要使用注解开发,必须要保证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>
      

      1.bean

      2.属性如何注入

      //等价于<bean id="user" class="com.gongyi.pojo.User"/>
      //@Component组件
      @Component
      public class User {
          // 相当于<property name="name" value="gongyi"/>
          @Value("gongyi")
          public String name;
          //@Value("muzi")
          public void setName(String name) {
              this.name = name;
          }
      }
      

      3.衍生的注解

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

      • dao【@Repository】
      • service【@Service】
      • controller【@Controller】

      这四个注解功能都是一样的,都是代表将某个类注册到spring中,装配bean

      4.自动装配

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

      5.作用域

      @Component
      @Scope("singleton")
      public class User {
          // 相当于<property name="name" value="gongyi"/>
          @Value("gongyi")
          public String name;
          //@Value("muzi")
          public void setName(String name) {
              this.name = name;
          }
      }
      

      6.小结

      xml与注解:

      • xml更加万能,适用于任何场合,维护简单方便
      • 注解 不是自己类使用不了(比如DataSource类),维护相对复杂

      xml与注解最佳实践:

      • xml用来管理bean
      • 注解只负责完成属性的注入
      • 我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持
      <!--指定要扫描的包,这个包下的注解就会生效-->
      <context:component-scan base-package="com.gongyi"/>
      <!--开启注解的支持-->
      <context:annotation-config/>
      

      代码show

      代码结构图:

      1.新建一个模块:

      spring-06-anno

      2.新建pojo包及类

      //等价于<bean id="user" class="com.gongyi.pojo.User"/>
      //@Component组件
      @Component
      @Scope("singleton")
      public class User {
          // 相当于<property name="name" value="gongyi"/>
          @Value("gongyi")
          public String name;
          //@Value("muzi")
          public void setName(String name) {
              this.name = name;
          }
      }
      

      3.新建dao包及类

      @Repository
      public class UserDao {
      }

      4.新建service包及类

      @Service
      public class UserService {
      }

      5.新建controller包及类

      @Controller
      public class UserController {
      }

      6.新建配置文件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
              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:component-scan base-package="com.gongyi"/>
          <!--开启注解的支持-->
          <context:annotation-config/>
      </beans>

      7.测试

      public class MyTest {
          public static void main(String[] args) {
              ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
              User user = (User) context.getBean("user");
              System.out.println(user.name);
          }
      }
      

      彩蛋

      1.被spring托管的类在idea中的显示

      1)未被托管前

      2)配置托管

      3)托管后

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!