注解配置模块

This commit is contained in:
zhangqingqing 2025-04-22 11:06:24 +08:00
parent eab7564a30
commit 94c5aeec7e
18 changed files with 227 additions and 7 deletions

1
.idea/compiler.xml generated
View File

@ -7,6 +7,7 @@
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="springLearn202503" />
<module name="springLearn20250422" />
</profile>
</annotationProcessing>
</component>

2
.idea/encodings.xml generated
View File

@ -3,5 +3,7 @@
<component name="Encoding">
<file url="file://$PROJECT_DIR$/springLearn202503/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/springLearn202503/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/springLearn20250422/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/springLearn20250422/src/main/resources" charset="UTF-8" />
</component>
</project>

1
.idea/misc.xml generated
View File

@ -5,6 +5,7 @@
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/springLearn202503/pom.xml" />
<option value="$PROJECT_DIR$/springLearn20250422/pom.xml" />
</list>
</option>
</component>

View File

@ -4,6 +4,7 @@ import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.sec.dao.UserDao;
import com.sec.service.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
@ -21,7 +22,8 @@ public class Main {
static String password = "";
public static void main(String[] args) {
Main.getSpring();
// Main.getSpring();
Main.getSpring1();
Main.getSetting();
Main.getDruid();
Main.getC3p0();
@ -42,6 +44,12 @@ public class Main {
// userDao.getData();
}
public static void getSpring1(){
ClassPathXmlApplicationContext application=new ClassPathXmlApplicationContext("application.xml");
UserService userService= (UserService)application.getBean("UserService");
userService.getUser();
}
//读取properties文件 对数据库连接信息进行设置
//目的是为了将配置信息与代码进行解耦
public static void getSetting(){
@ -52,6 +60,7 @@ public class Main {
password=rb.getString("jdbc.password");
}
//数据库连接池
public static void getDruid(){
DruidDataSource druidDataSource=new DruidDataSource();
druidDataSource.setDriverClassName(driver);

View File

@ -0,0 +1,10 @@
package com.sec.service;
import com.sec.dao.UserDao;
import com.sec.dao.impl.UserDaoImpl;
public interface UserService {
public void getUser();
}

View File

@ -0,0 +1,20 @@
package com.sec.service.impl;
import com.sec.dao.UserDao;
import com.sec.service.UserService;
public class UserServiceImpl implements UserService {
public UserDao userDao;
/* public void setUserDao(UserDao userDao){
this.userDao = userDao;
};*/
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void getUser() {
userDao.getData();
}
}

View File

@ -3,7 +3,18 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- <bean id="UserDao" class="com.impl.dao.com.sec.UserDaoImpl" scope="singleton" init-method="init" destroy-method="destroy"></bean>-->
<!-- <bean id="UserDao" class="com.factroy.com.sec.StaticFactroy" factory-method="getUserDao"></bean>-->
<bean id="DemoFactroy" class="com.sec.factroy.DemoFactroy"></bean>
<bean id="UserDao" factory-bean="DemoFactroy" factory-method="getDao"></bean>
<!-- <bean id="UserDao" class="com.sec.factroy.StaticFactroy" factory-method="getUserDao"></bean>-->
<!-- <bean id="DemoFactroy" class="com.sec.factroy.DemoFactroy"></bean>
<bean id="UserDao" factory-bean="DemoFactroy" factory-method="getDao"></bean>-->
<bean id="UserDao" class="com.sec.dao.impl.UserDaoImpl"></bean>
<!-- set方式进行依赖注入
<bean id="UserService" class="com.sec.service.impl.UserServiceImpl">
<property name="userDao" ref="UserDao"></property>
</bean>
-->
<!--构造方法进行依赖注入-->
<bean id="UserService" class="com.sec.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="UserDao"></constructor-arg>
</bean>
</beans>

View File

@ -3,7 +3,13 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- <bean id="UserDao" class="com.impl.dao.com.sec.UserDaoImpl" scope="singleton" init-method="init" destroy-method="destroy"></bean>-->
<!-- <bean id="UserDao" class="com.factroy.com.sec.StaticFactroy" factory-method="getUserDao"></bean>-->
<bean id="DemoFactroy" class="com.sec.factroy.DemoFactroy"></bean>
<bean id="UserDao" factory-bean="DemoFactroy" factory-method="getDao"></bean>
<!-- <bean id="UserDao" class="com.sec.factroy.StaticFactroy" factory-method="getUserDao"></bean>-->
<!-- <bean id="DemoFactroy" class="com.sec.factroy.DemoFactroy"></bean>
<bean id="UserDao" factory-bean="DemoFactroy" factory-method="getDao"></bean>-->
<bean id="UserDao" class="com.sec.dao.impl.UserDaoImpl"></bean>
<bean id="UserService" class="com.sec.service.impl.UserServiceImpl">
<!-- <property name="userDao" ref="UserDao"></property>-->
<constructor-arg name="userDao" ref="UserDao"></constructor-arg>
</bean>
</beans>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sec</groupId>
<artifactId>springLearn20250422</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.21</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,34 @@
package com.sec.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
/*
* 在多个配置的情况下 配置文件根据不同功能进行拆分
* 在主配置中导入即可
*
*/
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driverClassName ;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.user}")
private String username ;
@Value("${jdbc.password}")
private String password;
@Bean("DruidDataSource")
public DruidDataSource getDruidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(jdbcUrl);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}
}

View File

@ -0,0 +1,19 @@
package com.sec.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
/*
* @Configuration 表明当前类是 配置类
* @ComponentScan扫描对应文件下的注解格式的bean进行注入
* @PropertySource加载对应的属性文件 @Value将数据进行注入赋值
* @Value简单类型注入 直接@Value("要注入的数据")
* 将属性文件的变量数值进行注入 @Value("${要注入的数据变量名称}") 配合@PropertySource使用
* */
@Configuration
@ComponentScan("com.sec")
@Import(JdbcConfig.class)
public class LearnConfig {
}

View File

@ -0,0 +1,5 @@
package com.sec.dao;
public interface LearnDao {
public void getLearnData();
}

View File

@ -0,0 +1,37 @@
package com.sec.dao.impl;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.sec.dao.LearnDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* @Component该类为spring管理的bean
* 其衍生了三种注解
* @Controller 表现层
* @Service 业务层
* @Repository 数据层
* */
@Repository
public class LearnDaoImpl implements LearnDao {
@Autowired
private DruidDataSource druidDataSource;
@Override
public void getLearnData() {
try {
DruidPooledConnection connection = druidDataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from user_info");
while (resultSet.next()) {
System.out.println(resultSet.getString("user_name"));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -0,0 +1,5 @@
package com.sec.service;
public interface LearnService {
public void learn();
}

View File

@ -0,0 +1,17 @@
package com.sec.service.impl;
import com.sec.dao.LearnDao;
import com.sec.service.LearnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LearnServiceImpl implements LearnService {
@Autowired
public LearnDao learnDao;
@Override
public void learn() {
learnDao.getLearnData();
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

View File

@ -0,0 +1,4 @@
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://47.103.155.22:3306/learn_spring
jdbc.user=root
jdbc.password=mysql_wafeYX