0
点赞
收藏
分享

微信扫一扫

Java之Spring入门到精通【IDEA版】IoC和DI注解开发

大沈投资笔记 2022-05-04 阅读 79

price float(20,2) DEFAULT NULL,

cbs varchar(20) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


– Records of book


INSERT INTO book VALUES (‘1’, ‘Java从入门到精通’, ‘张三’, ‘15.00’, ‘清华大学’);

INSERT INTO book VALUES (‘5’, ‘11’, ‘11’, ‘11.00’, ‘11’);

INSERT INTO book VALUES (‘6’, ‘11’, ‘11’, ‘11.00’, ‘11’);

INSERT INTO book VALUES (‘8’, ‘JavaScript入门’, ‘刘伟’, ‘55.60’, ‘哈哈’);

INSERT INTO book VALUES (‘10’, ‘MySQL从入门到精通’, ‘刘玉徐’, ‘85.00’, ‘???’);


– Table structure for user


DROP TABLE IF EXISTS user;

CREATE TABLE user (

id int(11) NOT NULL AUTO_INCREMENT,

uname varchar(255) NOT NULL,

upass varchar(255) DEFAULT NULL,

tel varchar(255) NOT NULL,

address varchar(255) NOT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=124 DEFAULT CHARSET=utf8;


– Records of user


INSERT INTO user VALUES (‘123’, ‘123’, ‘123’, ‘123’, ‘123’);

[](()(4)创建C3P0连接池

在这里插入图片描述

在这里插入图片描述

package com.itbluebox.db;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import org.junit.Test;

import java.sql.Connection;

public class TestC3P0 {

@Test

public void testC3P0() throws Exception{

//数据源

ComboPooledDataSource dataSource = new ComboPooledDataSource();

//设置数据库连接参数

dataSource.setDriverClass(“com.mysql.jdbc.Driver”);

dataSource.setJdbcUrl(“jdbc:mysql://localhost:3306/test”);

dataSource.setUser(“root”);

dataSource.setPassword(“root”);

//获得连接对象

Connection connection = dataSource.getConnection();

System.out.println(connection);

}

}

运行测试

在这里插入图片描述

运行成功

在这里插入图片描述

[](()(5)创建Druid连接池

在这里插入图片描述

在这里插入图片描述

package com.itbluebox.db;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.druid.pool.DruidPooledConnection;

import org.junit.Test;

public class TestDruid {

@Test

public void testDruid() throws Exception{

//创建数据库源

DruidDataSource dataSource = new DruidDataSource();

//设置数据库连接参数

dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);

dataSource.setUrl(“jdbc:mysql://localhost:3306/test”);

dataSource.setUsername(“root”);

dataSource.setPassword(“root”);

//获取连接对象

DruidPooledConnection connection = dataSource.getConnection();

System.out.println(connection);

}

}

在这里插入图片描述

运行成功

在这里插入图片描述

[](()3、数据源的手动创建(读取jdbc.properties)

[](()(1)提取jdbc.properties配置文件

在这里插入图片描述

在这里插入图片描述

jdbc.driver = com.mysql.jdbc.Driver

jdbc.url = jdbc:mysql://localhost:3306/test

jdbc.username = root

jdbc.password = root

[](()(2)读取jdbc.properties配置文件创建连接池

在这里插入图片描述

在这里插入图片描述

package com.itbluebox.db;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import org.junit.Test;

import java.sql.Connection;

import java.util.ResourceBundle;

public class TestC3P0ByProperties {

@Test

public void C3P0ByProperties() throws Exception{

//加载类路径下的jdbc.properties

ResourceBundle rb = ResourceBundle.getBundle(“jdbc”);

ComboPooledDataSource dataSource = new ComboPooledDataSource();

dataSource.setDriverClass(rb.getString(“jdbc.driver”));

dataSource.setJdbcUrl(rb.getString(“jdbc.url”));

dataSource.setUser(rb.getString(“jdbc.username”));

dataSource.setPassword(rb.getString(“jdbc.password”));

Connection connection = dataSource.getConnection();

System.out.println(connection);

}

}

在这里插入图片描述

[](()4、测试从容器当中获取数据源(applicationContext.xml)

[](()(1)创建applicationContext.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:p=“http://www.springframework.org/schema/p”

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd"

<context:property-placeholder location=“classpath:jdbc.properties”></context:property-placeholder>

运行测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PkEMbMi-1651635195406)(https://img- 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 blog.csdnimg.cn/6e9a5167653c4db5ba58cfa2e50b1b1f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6JOd55uS5a2QaXRibHVlYm94,size_20,color_FFFFFF,t_70,g_se,x_16)]

在这里插入图片描述

[](()二、Spring注解开发


[](()1、Spring原始注解

Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。

  • Spring原始注解主要是替代<Bean>的配置

在这里插入图片描述

在这里插入图片描述

注意:

使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,

作用是指定哪个包及其子包下的Bean

[](()(1)需要进行扫描以便识别使用注解配置的类、字段和方法。

<context:component-scan base-package=“com.itbluebox”>

</context:component-scan>

在这里我们切换回第一篇文章创建的工程Spring-test-demo

在这里插入图片描述

<?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:p=“http://www.springframework.org/schema/p”

xmlns:context=“http://www.springframework.org/schema/context”

xsi:schemaLocation="

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd"

<context:property-placeholder location=“classpath:jdbc.properties”></context:property-placeholder>

<context:component-scan base-package=“com.itbluebox”></context:component-scan>

  • 完善UserDaoImpl

在这里插入图片描述

package com.itbluebox.dao.impl;

import com.itbluebox.dao.UserDao;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

@Component(“userDao”)

public class UserDaoImpl implements UserDao {

@Value(“注入普通数据”)

private String str;

@Value(“${jdbc.driver}”)

private String driver;

public void save() {

System.out.println(str);

System.out.println(driver);

System.out.println(“UserDao save method running…”);

}

}

  • 运行测试

在这里插入图片描述

在这里插入图片描述

[](()(6)使用@Scope标注Bean的范围

@Scope(“singleton”)

在这里插入图片描述

[](()(7)使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法

完善UserServiceImpl

在这里插入图片描述

package com.itbluebox.service.impl;

import com.itbluebox.dao.UserDao;

import com.itbluebox.service.UserService;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

import javax.annotation.PreDestroy;

import javax.annotation.Resource;

@Service(“userService”)

@Scope(“singleton”)

public class UserServiceImpl implements UserService {

/*

@Autowired

@Qualifier(“userDao”)

*/

@Resource(name=“userDao”)

private UserDao userDao;

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

public void save() {

System.out.println(“UserServiceImpl save method running…”);

userDao.save();

}

@PostConstruct

public void init(){
or_FFFFFF,t_70,g_se,x_16)

[](()(7)使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法

完善UserServiceImpl

在这里插入图片描述

package com.itbluebox.service.impl;

import com.itbluebox.dao.UserDao;

import com.itbluebox.service.UserService;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

import javax.annotation.PreDestroy;

import javax.annotation.Resource;

@Service(“userService”)

@Scope(“singleton”)

public class UserServiceImpl implements UserService {

/*

@Autowired

@Qualifier(“userDao”)

*/

@Resource(name=“userDao”)

private UserDao userDao;

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

public void save() {

System.out.println(“UserServiceImpl save method running…”);

userDao.save();

}

@PostConstruct

public void init(){

举报

相关推荐

0 条评论