栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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"

[](()(2)创建测试类,测试从容器当中获取数据源

package com.itbluebox.db;

import org.junit.Test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.sql.DataSource;

import java.sql.Connection;

public class TestC3P0Application {

@Test

public void TestC3PO() throws Exception{

ClassPathXmlApplicationContext applicationContext =

new ClassPathXmlApplicationContext(“applicationContext.xml”);

DataSource dataSource = (DataSource)applicationContext.getBean(“dataSource”);

Connection connection = dataSource.getConnection();

System.out.println(connection);

}

}

[](()5、抽取jdbc配置文件 [](()(1)修改applicationContext.xml
  • applicationContext.xml加载jdbc.properties配置文件获得连接信息。

  • 首先,需要引入context命名空间和约束路径:

  • 命名空间:xmlns:context="http://www.springframework.org/schema/context"

  • 约束路径:

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

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

  • Spring容器加载properties文件

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"

运行测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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原始注解主要是替代的配置

注意:

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

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

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

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

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"

[](()(2)UserDao:使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化。

package com.itbluebox.dao.impl;

import com.itbluebox.dao.UserDao;

import org.springframework.stereotype.Component;

@Component(“userDao”)

public class UserDaoImpl implements UserDao {

public void save() {

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

}

}

[](()(3)UserServiceImpl

使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化

使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入

package com.itbluebox.service.impl;

import com.itbluebox.dao.UserDao;

import com.itbluebox.service.UserService;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service(“userService”)

public class UserServiceImpl implements UserService {

@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();

}

}

[](()(4)创建UserController

package com.itbluebox.web;

import com.itbluebox.service.UserService;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserController {

public static void main(String[] args) {

ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”);

UserService userService = app.getBean(UserService.class);

userService.save();

}

}

运行测试

[](()(5)使用@Value进行字符串的注入
  • 引入依赖

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”>

4.0.0

com.itbluebox

spring-test-demo

1.0.0-SNAPSHOT

5.0.5.RELEASE

org.springframework

spring-context

${spring.version}

c3p0

c3p0

0.9.1.2

com.alibaba

druid

1.1.10

mysql

mysql-connector-java

5.1.39

junit

junit

4.12

test

  • 创建jdbc.properties

  • 完善applicationContext.xml配置文件

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"

  • 完善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 {

@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 {

@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(){

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856969.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号