Spring注解开发

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. https://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. https://www.springframework.org/schema/context/spring-context.xsd">
  9. <!--注解支持-->
  10. <context:annotation-config/>
  11. </beans>

bean注册到Spring容器中

applicationContext.xml添加包扫描注解

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. https://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. https://www.springframework.org/schema/context/spring-context.xsd">
  9. <!--注解支持-->
  10. <context:annotation-config/>
  11. <!--指定要扫描的包,包下的注解就会生效-->
  12. <context:component-scan base-package="com.qing"/>
  13. </beans>

实体类添加注解@Component

  1. package com.qing.dao;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class User {
  5. private String name;
  6. }
  1. import com.qing.dao.User;
  2. import org.junit.jupiter.api.Test;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. public class MyTest {
  6. @Test
  7. public void test01(){
  8. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  9. User user = context.getBean("user", User.class);
  10. System.out.println(user.getName());
  11. }
  12. }


User实体类被Spring管理,通过@Component注解注册到Spring容器中

属性注入

属性添加注解@Value("张三丰")

  1. package com.qing.pojo;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. public class User {
  6. @Value("张三丰")
  7. private String name;
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14. }
  1. import com.qing.pojo.User;
  2. import org.junit.jupiter.api.Test;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. public class MyTest {
  6. @Test
  7. public void test01(){
  8. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  9. User user = context.getBean("user", User.class);
  10. System.out.println(user.getName());
  11. }
  12. }

@Component的衍生注解

在web开发中,会按照MVC三层架构分层,分别使用注解,但他们的作用和@Component注解是一样的,都是将类注册到spring容器中,只是为了标记分层使用不同的注解

dao层 @Repository

  1. package com.qing.dao;
  2. import org.springframework.stereotype.Repository;
  3. @Repository
  4. public class UserDao {
  5. }

service层 @Service

  1. package com.qing.service;
  2. import org.springframework.stereotype.Service;
  3. @Service
  4. public class UserService {
  5. }

controller层 @Controller

  1. package com.qing.controller;
  2. import org.springframework.stereotype.Controller;
  3. @Controller
  4. public class UserController {
  5. }

自动装配

作用域

单例@Scope("singleton") 原型@Scope("prototype")

  1. package com.qing.pojo;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.context.annotation.Scope;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. @Scope("singleton")
  7. //@Scope("prototype")
  8. public class User {
  9. @Value("张三丰")
  10. private String name;
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. }

xml与注解区别

@Configuration 不使用Spring的xml配置,完全Java来做

JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功能

添加配置类

@Configuration代表这是一个配置类

  1. package com.qing.config;
  2. import org.springframework.context.annotation.ComponentScan;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.context.annotation.Import;
  5. // @Configuration代表这是一个配置类,相当于applicationContext.xml
  6. @Configuration
  7. // @ComponentScan 扫描包下注解
  8. @ComponentScan("com.qing.pojo")
  9. // @Import 导入其他配置类
  10. @Import(QingConfig2.class)
  11. public class QingConfig {
  12. }

实体类添加注解

  1. package com.qing.pojo;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. public class User {
  6. @Value("张三丰")
  7. private String name;
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14. }

测试

  1. import com.qing.config.QingConfig;
  2. import com.qing.pojo.User;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  6. public class MyTest {
  7. @Test
  8. public void test01(){
  9. // 通过AnnotationConfigApplicationContext获取容器,通过配置类的class加载
  10. ApplicationContext context = new AnnotationConfigApplicationContext(QingConfig.class);
  11. User user = context.getBean("user", User.class);
  12. System.out.println(user.getName());
  13. }
  14. }

040_Spring注解开发的更多相关文章

  1. SpringMVC注解开发初步

    一.(补充)视图解析器---XmlViewResolver 作用:分离配置信息. 在视图解析器---BeanNameViewResolver的基础之上进行扩充,新建一个myView.xml分离信息 在 ...

  2. SpringMVC的注解开发入门

    1.Spring MVC框架简介 支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换.格式化.验证框架无缝集成 ...

  3. Struts2框架之-注解开发

    Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...

  4. Java自定义注解开发

    一.背景 最近在自己搞一个项目时,遇到可需要开发自定义注解的需求,对于没有怎么关注这些java新特性的来说,比较尴尬,索性就拿出一些时间,来进行研究下自定义注解开发的步骤以及使用方式.今天在这里记下, ...

  5. Annotation(四)——Struts2注解开发

    Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...

  6. Annotation(三)——Spring注解开发

    Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action, ...

  7. Annotation(一)——注解开发介绍

    <p>在编程中,一直强调的一点就是注释的编写,注释的规范等等.尤其是越是核心,程序越复杂,逻辑越多的清空下,注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用.一款软件有着好的注释 ...

  8. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

  9. 使用Java注解开发自动生成SQL

    使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...

随机推荐

  1. 18.自动运维工具ansible

    1 Ansible 介绍和架构 1.1 Ansible介绍 ansible 的名称来自科幻小说<安德的游戏>中跨越时空的即时通信工具,使用它可以在相距数光年的 距离,远程实时控制前线的舰队 ...

  2. 基于gitlab 打tag形成版本视图源码包和可执行包

    实现步骤说明 第一步创建发布tag 创建的tag生成效果 第二步进入release 第三步到制品库去拷贝编译可执行包的下载地址 右键复制链接下载地址 编辑tag信息 填写编译后可执行文件的安装包 最终 ...

  3. hadoop安装前的准备

    1.操作系统安装 2.hostname设定 3.hosts文件设定 4.ssh免密码登录 5.NTP时间同步设定 6.iptables永久关闭 7.selinux永久关闭

  4. @Valid 注解的使用

    限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为true @DecimalMax( ...

  5. 14 shell 函数

    1.shell函数的定义与调用 2.shell函数参数 3.函数返回值 1.shell函数的定义与调用 Shell 函数定义 说明 函数定义的简化写法 函数调用 function name() {   ...

  6. Java8 Map中新增的方法使用总结

    前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, ...

  7. Java并发实战一:线程与线程安全

    从零开始创建一家公司 Java并发编程是Java的基础之一,为了能在实践中学习并发编程,我们跟着创建一家公司的旅途,一起来学习Java并发编程. 进程与线程 由于我们的目标是学习并发编程,所以我不会把 ...

  8. 使用 Java 和 Maven (JBake) 生成静态网站

    使用 JBake("mvn generate-resources")构建您的静态网站或博客.使用布局.宏和数据文件. 我们迁移了整个www.optaplanner.org网站(13 ...

  9. java基础---常用类

    一.字符串类String String:字符串,使用一对""引起来表示,字符串常量池在方法区中 public final class String implements java. ...

  10. 自动化运维必须要学的Shell脚本之——循环语句(for、while和until循环)

    1. 循环前先了解echo的使用 1.1 echo -n 表示不换行输出 1.2 echo -e 输出转义字符,将转义后的内容输出到屏幕上 常见的转义字符有: 1.2.1 \b 相当于退格键 转义后相 ...