Spring第五篇【注解】

Spring注解

原始注解

Spring原始注解

新注解

Spring新注解

注解开发

Spring核心配置文件

package com.example.demo.config;

import org.springframework.context.annotation.*;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Configuration
@ComponentScan("com.example.demo")
@Scope("singleton")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {

    @PostConstruct
    public void init(){
        System.out.println("初始化----------");
    }

    @PreDestroy
    public void destroy(){
        System.out.println("销毁----------");
    }
}

Spring数据源配置文件

package com.example.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean("druidDataSource")
    public DataSource getDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

}

JUnit测试

import com.alibaba.druid.pool.DruidDataSource;
import com.example.demo.config.SpringConfig;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {

    @Test
    public void test(){
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
        DruidDataSource druidDataSource = annotationConfigApplicationContext.getBean(DruidDataSource.class);
        System.out.println(druidDataSource);
        annotationConfigApplicationContext.close();
    }
}
<?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>annotation</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.8.RELEASE</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

Spring整合JUnit

import com.example.demo.config.SpringConfiguration;
import com.example.demo.service.impl.UserServiceImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJUnitTest {

    @Autowired
    private UserServiceImpl userServiceImpl;

    @Test
    public void test() {
        System.out.println(userServiceImpl);
    }

}

@Autowired和@Resource的区别:

@Autowried先通过byType注入,如果有多个符合的type,再通过byName注入;@Resource通过byName注入

SpringMvc注解

@ModelAttribute

先执行此注解标注的方法,在执行controller内的方法

@SessionAttributes

将Model内的属性添加到Session中

@CookieValue

根据cookie的key取出对应的value

posted @ 2020-08-13 16:13  幻竹  阅读(139)  评论(0)    收藏  举报