Spring的注解开发

Spring的注解开发分为两种,一种是部分使用注解,仍然保留配置文件的原始注解;另一种是完全使用注解配置的新注解;

原始注解

主要是替代 自定义Bean的xml配置,和Hibernate的原始注解一样,我们还得告诉配置文件,我们使用注解配置了哪些文件
使用注解,得配置context命名空间和约束路径


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    --配置context命名空间-->
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    
    <context:component-scan base-package="com.cuixiaoming">context:component-scan>

beans>

下面是使用的注解

//这四个对象的使用方法完全一样,下面三个是第一个的语义化注解
@Component:实例化对象    (重点)
    //用在类定义上,里面是以前bean标签中的id如    @Component("userService")
@Controller:用于实例化web层的实体    (重点)
@Service:用于实例化service层的实体   (重点)
@Repository:用于实例化dao层的实体  Repository:直译是仓库的意思   (重点)


//对象注入,配置在
@Autowired:注入对象 注意:单独使用它是按照类型注入的    (重点)
@Qualifier(id值) :使用@Autowired+@Qualifier 是按照指定的id名称进行注入
@Resource(name="id的值") 相当于@Autowired+@Qualifier

//字符串注入
@Value(字符串)
@Value("${spring容器中key}")  (重点)

//
@Scope("singleton/prototype")   (重点)

@PostConstruct
@PreDestroy

如果非自定义实体 不能使用上述原始注解进行实例化的配置

新注解

新注解是把xml配置文件换成了实体配置类
新注解常用的标签如下

@Configuration : 标注该实体是一个配置类
@ComponentScan : 用于扫描包  ---->@ComponentScan(basePackages = {"com.cuixiaoming"})
@Bean  : 将@Bean修饰的方法的返回值 以指定的名称存储到spring容器中---->@Bean(name="dataSource")
@PropertySource : 加载properties文件  ---->@PropertySource("classpath:jdbc.properties")
@Import : 引入其他配置实体  ---->@Import({DataSourceConfiguration.class})

里面把我测试的例子贴上来
主配置实例

package com.cuixiaoming.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

//将配置xml换成一个配置的实体类
//声明这是一个配置实体类
@Configuration
//配置包扫描路径
@ComponentScan(basePackages = {"com.cuixiaoming"})
@Import({DataSourceConfiguration.class})//引入的是其他配置实体的字节码对象

public class SpringConfiguration {
}
 //配置占位符配置器(在Spring4.3版本以下,都需要手动配置配置器对象,在所有配置对象中,只要其中一个配置了就可以了)

用来数据源配置的配置实例

package com.cuixiaoming.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

@Configuration
//将properties中数据加载进spring容器中
@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 passworld;

    //将该方法的返回值以指定的名称储存到spring容器中
    @Bean(name="dataSource")
    public DataSource getDataSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(passworld);
        return dataSource;
    }

    //配置占位符配置器(在Spring4.3版本以下,都需要手动配置配置器对象,在所有配置对象中,只要其中一个配置了就可以了)
    @Bean
    public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){
        return new PropertySourcesPlaceholderConfigurer();
    }
}
  • 配置占位符配置器(在Spring4.3版本以下,都需要手动配置配置器对象,在所有配置对象中,只要其中一个配置了就可以了)
 @Bean
 public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){
     return new PropertySourcesPlaceholderConfigurer();
 }

你可能感兴趣的:(框架,Spring)