zoukankan      html  css  js  c++  java
  • spring注解

    一、pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>A02spring</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <!--https://mvnrepository.com/artifact/org.springframework/spring-context-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.8.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
            <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    二、spring的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.wuxi"></context:component-scan>
    
    </beans>

    三、bean

    package com.wuxi.benas;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import javax.annotation.Resource;
    
    /*
    一、注解创建对象(四个注解功能一样)
        @Component:属性value用于指定bean的id,它的默认值是当前类名(首字母小写)
        @Controller:一般用在表现层
        @Service:一般用在业务层
        @Repository:一般用在持久层
    二、注入数据(注解无法注入集合类型数据,只有xml方式可以注入)
        @Autowired
            @Autowired
            private Student student;
            1、容器中bean的id作为key,class作为value
            2、注入时,首先会在容器中匹配数据类型(Student和class)
            3、当有多个数据类型可匹配时,则匹配变量名称(student和id)
        @Qualifier
            @Autowired
            @Qualifier("studentAnno")
            private Student student;
            1、根据@Qualifier的value值,匹配容器中的id
            2、必须和@Autowired一起使用
        @Resource
            @Resource(name="studentAnno")
            private Student student;
            1、相当于@Autowired+@Qualifier
        @Value
            @Value("mengmeiqi")
            private String name;
            1、可以注入String类型或者基本数据类型的数据,以上三种无法注入
            2、属性值可以使用${}表达式,来注入配置文件中的数据
    3、创建对象方式
        @Scope
            singleton:单例;生命周期与容器一致
            prototype:多例;使用时创建。没有引用时,由垃圾回收器销毁
    4、生命周期回调
        @PostConstruct:对象创建回调方法
        @PreDestroy:对象销毁回调方法
    */
    @Component("gradeAnno")
    @Scope("singleton")
    public class Grade {
    
        @Resource(name="studentAnno")
        private Student student;
    
        @PostConstruct
        public void initMethod(){
            System.out.println("对象创建");
        }
    
        @PreDestroy
        public void destoryMethod(){
            System.out.println("对象销毁");
        }
    
        public void studentMethod() {
            student.study();
        }
    }

    四、使用

    package com.wuxi.tests;
    
    import com.wuxi.benas.Grade;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class MySpringTest {
        public static void main(String[] args) {
            // ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
            ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
    /*
            // 测试注解
            Grade grade = ac.getBean("gradeAnno", Grade.class);
            grade.studentMethod();
    
            // 测试对象创建方式
            Grade grade1 = ac.getBean("gradeAnno", Grade.class);
            Grade grade2 = ac.getBean("gradeAnno", Grade.class);
            System.out.println(grade1 == grade2);
    */
            // 测试生命周期回调
            ac.getBean("gradeAnno", Grade.class);
            ac.close();
        }
    }
  • 相关阅读:
    Python--关于dict
    数据结构之线性表的实现
    js数据类型检测小结
    javascript的执行机制—Event Loop
    深入理解理解 JavaScript 的 async/await
    操作系统管理CPU的直观想法
    入门Promise的正确姿势
    javascript的数据类型转换
    JS预编译详解
    如何去封装一个Ajax库
  • 原文地址:https://www.cnblogs.com/linding/p/13657783.html
Copyright © 2011-2022 走看看