Spring的数据库连接池、IOC和依赖注入的全注解配置

数据库连接池的XML配置

此处我用的是c3p0连接池,导入外部的数据库配置文件

<context:property-placeholder location="classpath:jdbc.properties">
</context:property-placeholder>
<bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="${jdbc.driver}"></property>
	<property name="jdbcUrl" value="${jdbc.url}"></property>
	<property name="user" value="${jdbc.username}"></property>
	<property name="password" value="${jdbc.password}"></property>
</bean>

Spring的IOC和依赖注入注解配置

@Component("bean的id值") 定义在类上 只要定义在了类上 
                             那么注解扫描器只要一扫描到就会创建该类的实例对象 放在spring容器中

现在都是使用这个注解所衍生的三个注解

@Controller("bean的id值") 针对的就是web层  
           @Service("bean的id值")    针对的是service层
           @Repository("bean的id值") 针对的是dao层

@Scope("singleton"或则prototype)  定义在类上的 指定当前类是单实例还是多实例

将其放到类的上方即可,如不指定bean的id值,则默认为方法名的首字母小写的名称

@Repository
public class PersonDaoImpl implements PersonDao{}



@Service
public class PersonServiceImpl implements PersonService{}

接下来就是数据的依赖注入

@Value("属性值") 定义在属性字段上 针对的是基本类型和String类型
                                        如果使用了这个注解 该属性的set方法可以省略不写

@Autowired 定义在属性字段上的 针对的是对象类型
                                如果定义在了那个对象类型的属性身上 会自动去spring容器中找该类型的实例对象给赋值,当容器中

                    存在多个该类型的实例对象时会报错,这是需要和下面这个注解配合使用

@Qualifier("bean的id值")定义在属性字段上的 指定用该类型的哪个id名称的实例对象
                                                    注意: @Qualifier要想使用 必须结合 @Autowired 一起使用

@Resource("bean的id值")是@Autowired和@Qualifier俩注解的功能和

@PostConstruct   初始化执行的方法,放在方法上

@PreDestroy         销毁时执行的方法,放在方法上

	@Value("3")
	private Integer id;


        @Autowired
//	@Qualifier("personDaoImpl")
	private PersonDao personDao;

	@Override
	public void save() {
		personDao.save();
	}
	
	@PostConstruct   //初始化执行的方法
	public void init() {
		System.out.println("PersonServiceImpl创建了");
	}
	
	@PreDestroy		 //销毁时执行的方法
	public void destory() {
		System.out.println("PersonServiceImpl销毁了");
	}

Spring的注解配置文件和数据库连接池的注解配置

@Configuration   //注解配置类
@ComponentScan(value="service,dao")  //配置要扫描的包,扫描多个包用逗号隔开
@PropertySource(value="classpath:jdbc.properties")  //配置要加载的外部文件
public class SpringConfig {

	@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(name="c3p0")
	public  DataSource createDataSource() throws Exception {
		
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		dataSource.setDriverClass(driver);
		dataSource.setJdbcUrl(url);
		dataSource.setUser(username);
		dataSource.setPassword(password);
		return dataSource;
	}
	
	
	//   Spring在4.3版本之前要配置此解析器,否则无法识别${},4.3及以后的版本不需要配置
	@Bean
	public static PropertySourcesPlaceholderConfigurer createPlaceholderConfigurer() {
		return new PropertySourcesPlaceholderConfigurer();
	}
}

 

此文章为我个人的学习笔记总结,自用

发布了29 篇原创文章 · 获赞 3 · 访问量 889

猜你喜欢

转载自blog.csdn.net/weixin_44616792/article/details/95990903