Spring纯注解

@Configuration注解

@Configuration配置类注解,在纯注解配置中,类加了该注解,就意味着该类是Spring的配置类。该类的功能就是用于替代原来的XML配置文件。

作用:
用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationConfigApplicationContext(有@Configuration注解的类.class)。

@ComponentScan注解

@ComponentScan注解扫描类,作用就是配置扫描Spring组件类的路径。功能等同原来配置文件的
--作用:
用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的:
是一样的。
--属性:
basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。

@PropertySource注解

作用:
用于加载.properties文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。
属性:
value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:

@Bean注解

作用:
该注解只能写在方法上,使用此方法创建一个对象,并且放入spring容器。它就相当于我们之前在xml配置中介绍的

属性:

name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。

@Import注解

作用:
用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解。当然,写上也没问题。
属性:
value[]:用于指定其他配置类的字节码。

@Value注解

读取properties配置文件以后, 使用 ${key}获取配置文件中对应的值

@Vlaue(“${jdbc.dirverClassName}”)
private String driverClassName;

配置步骤

项目结构图

在这里插入图片描述

SpringConfig

package com.spring.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.druid.pool.DruidDataSource;

/*
 * 	此类在spring全注解开发中当做spring框架的配置类,用于替代applicationContext.xml配置文件
 * 
 * -----------------------------------------------------------------------------------------
 * 	【1】@Configuration //作用:把当前类作为spring配置文件类
 * 
 * -----------------------------------------------------------------------------------------
 * 	【2】@ComponentScan(basePackages = "com.spring") 也可以这样写@ComponentScan("com.spring")
 *	作用:配置spring支持注解配置的包扫描注解
 *
 * -----------------------------------------------------------------------------------------
 * 	【3】@Bean 作用:spring创建对象,相当于<bean>标签
 * 		name属性:设置bean的名称。不取,默认对象名为方法名。相当于<bean name=""/>
 *      initMethod属性:设置初始化方法,相当于<bean initMethod=""/>
 *      destroyMethod属性:设置销毁方法,相当于<bean destroyMethod=""/>
 *      @Scope作用:设置bean对象的作用范围
 * -----------------------------------------------------------------------------------------
 * 	【4】@PropertySource 作用:读取properties配置文件。
 * 		相当于<context:property-placeholder location="classpath:db.properties"/>
 * 		读取配置文件必须加上:classpath:前缀
 * -----------------------------------------------------------------------------------------
 * 	【5】@Value 作用:注入基本数据类型以及它们的包装类和String类型数据的,支持注入Properties文件的键值对
 * 		相当于<proprty  name="…" value="${Key}">。
 * -----------------------------------------------------------------------------------------
 * 	【6】@Import 作用:用于导入其他配置类
 * 		value属性:用于指定其他配置类的字节码。
 * -----------------------------------------------------------------------------------------
 */
@Configuration //作用:把当前类作为spring配置文件类
@ComponentScan(basePackages = "com.spring") //包扫描
@PropertySource("classpath:db.properties")
@Import(SpringConfig1.class)
public class SpringConfig {
	
	@Value("${jdbc.driverName}")
	private String driverClassName;
	
	@Value("${jdbc.url}")
	private String url;
	
	@Value("${jdbc.username}")
	private String username;
	
	@Value("${jdbc.password}")
	private String password;
	
	@Value("10")
	private Integer maxActive;

	@Bean(initMethod = "init",destroyMethod = "close") //相当于<bean>标签
	//@Scope("singleton")
	public DataSource getDataSource() {
		System.out.println("创建数据源");
		DruidDataSource dataSource=new DruidDataSource();
		dataSource.setDriverClassName(driverClassName);
		dataSource.setUrl(url);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		dataSource.setMaxActive(maxActive);
		return dataSource;
	}
	
}

SpringConfig1

package com.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration //作用:把当前类作为spring配置文件类
public class SpringConfig1 {
	
	@Bean
	public Object getObject() {
		System.out.println("xxx");
		return new Object();
	}
	
}

db.properties

#批量修改alt+shift+a,使用鼠标多拉,修改完毕以后,alt+shift+a 还原
jdbc.driverName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/gj1?characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
jdbc.maxActive=10

CustomDaoImpl

package com.spring.dao.impl;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.spring.dao.CustomDao;

@Repository
public class CustomDaoImpl implements CustomDao{
	
	@Autowired
	private DataSource dataSource;
	
	@Override
	public void insert() {
		try {
			Connection connection = dataSource.getConnection();
			System.out.println(connection);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}

CustomServiceImpl

package com.spring.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.spring.dao.CustomDao;
import com.spring.service.CustomService;

@Service
public class CustomServiceImpl  implements CustomService{
	
	@Autowired
	private CustomDao customDao;

	@Override
	public void insert() {
		customDao.insert();
	}

}

CustomController

package com.spring.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.spring.service.CustomService;

@Controller
public class CustomController {

	@Autowired
	private CustomService customService;
	
	public void insert() {
		customService.insert();
	}
}

测试代码

	@Test
	public void testName() throws Exception {

		//不使用@Import注解时,有多个配置类的时候,这样使用ApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig.class,SpringConfig1.class);
		//ApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig.class,SpringConfig1.class);
		//当在SpringConfig类上使用@Import注解导入其他配置类时,这样使用ApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig.class);
		ApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig.class);
		DataSource dataSource = applicationContext.getBean("getDataSource",DataSource.class);
		Connection connection = dataSource.getConnection();
		System.out.println(connection);
		
		CustomController controller = applicationContext.getBean("customController", CustomController.class);
		controller.insert();
		
		//Object bean = applicationContext.getBean("getObject",Object.class);
		
	}

测试结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值