日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Spring數(shù)據(jù)源及注解開發(fā)

作者:學JAVA的秀琴 更新時間: 2022-05-11 編程語言

目錄

1.數(shù)據(jù)源的手動創(chuàng)建

Spring配置數(shù)據(jù)源

2. Spring注解開發(fā)

1 Spring原始注解

2 Spring新注解

Spring整合Juni

1.數(shù)據(jù)源的手動創(chuàng)建

常見的數(shù)據(jù)源(連接池):DBCP、C3P0、BoneCP、Druid等

開發(fā)步驟

①導入數(shù)據(jù)源的坐標和數(shù)據(jù)庫驅(qū)動坐標

②創(chuàng)建數(shù)據(jù)源對象

③設置數(shù)據(jù)源的基本連接數(shù)據(jù)

④使用數(shù)據(jù)源獲取連接資源和歸還連接資源

①導入c3p0和druid的坐標



    c3p0
    c3p0
    0.9.1.2



    com.alibaba
    druid
    1.1.10

①導入mysql數(shù)據(jù)庫驅(qū)動坐標



    mysql
    mysql-connector-java
    5.1.39

②創(chuàng)建C3P0連接池

@Test
public void testC3P0() throws Exception {
	//創(chuàng)建數(shù)據(jù)源
	ComboPooledDataSource dataSource = new ComboPooledDataSource();
	//設置數(shù)據(jù)庫連接參數(shù)
    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);
}

②創(chuàng)建Druid連接池 ????????

@Test
public void testDruid() throws Exception {
    //創(chuàng)建數(shù)據(jù)源
    DruidDataSource dataSource = new DruidDataSource();
    //設置數(shù)據(jù)庫連接參數(shù)
    dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    dataSource.setUrl("jdbc:mysql://localhost:3306/test");   
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    //獲得連接對象
    Connection connection = dataSource.getConnection();    
    System.out.println(connection);
}

③提取jdbc.properties配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root

④讀取jdbc.properties配置文件創(chuàng)建連接池

@Test
public void testC3P0ByProperties() 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);
}

Spring配置數(shù)據(jù)源

可以將DataSource的創(chuàng)建權交由Spring容器去完成

DataSource有無參構造方法,而Spring默認就是通過無參構造方法實例化對象的

DataSource要想使用需要通過set方法設置數(shù)據(jù)庫連接信息,而Spring可以通過set方法進行字符串注入


    
    
    
    

?測試從容器當中獲取數(shù)據(jù)源

ApplicationContext applicationContext = new 
           ClassPathXmlApplicationContext("applicationContext.xml");
               DataSource dataSource = (DataSource) 
applicationContext.getBean("dataSource");
Connection connection = dataSource.getConnection();
System.out.println(connection);

抽取jdbc配置文件

首先,需要引入context命名空間和約束路徑:

命名空間:xmlns:context="Index of /schema/context"

約束路徑:Index of /schema/context ? ????????????????????????http://www.springframework.org/schema/context/spring-context.xsd



    
    
    
    

知識要點

Spring容器加載properties文件


 

2. Spring注解開發(fā)

1 Spring原始注解

Spring原始注解主要是替代的配置

注解 說明
@Component 使用在類上用于實例化Bean
@Controller 使用在web層類上用于實例化Bean
@Service 使用在service層類上用于實例化Bean
@Repository 使用在dao層類上用于實例化Bean
@Autowired 使用在字段上用于根據(jù)類型依賴注入
@Qualifier 結合@Autowired一起使用用于根據(jù)名稱進行依賴注入
@Resource 相當于@Autowired+@Qualifier,按照名稱進行注入
@Value 注入普通屬性
@Scope 標注Bean的作用范圍
@PostConstruct 使用在方法上標注該方法是Bean的初始化方法
@PreDestroy

使用在方法上標注該方法是Bean的銷毀方法

注意:

使用注解進行開發(fā)時,需要在applicationContext.xml中配置組件掃描,作用是指定哪個包及其子包下的Bean需要進行掃描以便識別使用注解配置的類、字段和方法。


使用@Compont或@Repository標識UserDaoImpl需要Spring進行實例化。

//@Component("userDao")
@Repository("userDao")
public class UserDaoImpl implements UserDao {
 ? ?@Override
 ? ?public void save() {
 ?      System.out.println("save running... ...");
 ?  }
}

使用@Compont或@Service標識UserServiceImpl需要Spring進行實例化

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

//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
 ? ?/*@Autowired
 ? ?@Qualifier("userDao")*/
 ? ?@Resource(name="userDao")
 ? ?private UserDao userDao;
 ? ?@Override
 ? ?public void save() { ? ? ? 
 ?   ?userDao.save();
 ?  }
}

使用@Value進行字符串的注入

@Repository("userDao")
public class UserDaoImpl implements UserDao {
 ? ?@Value("注入普通數(shù)據(jù)")
 ? ?private String str;
 ? ?@Value("${jdbc.driver}")
 ? ?private String driver;
 ? ?@Override
 ? ?public void save() {
 ? ? ? ?System.out.println(str);
 ? ? ? ?System.out.println(driver);
 ? ? ? ?System.out.println("save running... ...");
 ?  }
}

使用@Scope標注Bean的范圍

//@Scope("prototype")
@Scope("singleton")
public class UserDaoImpl implements UserDao {
 ? //此處省略代碼
}

使用@PostConstruct標注初始化方法,使用@PreDestroy標注銷毀方法

@PostConstruct
public void init(){
    System.out.println("初始化方法....");
}
@PreDestroy
public void destroy(){
    System.out.println("銷毀方法.....");
}

2 Spring新注解

注解 說明
@Configuration 用于指定當前類是一個 Spring 配置類,當創(chuàng)建容器時會從該類上加載注解
@ComponentScan 用于指定 Spring 在初始化容器時要掃描的包。 作用和在 Spring 的 xml 配置文件中的 一樣
@Bean 使用在方法上,標注將該方法的返回值存儲到 Spring 容器中
@PropertySource 用于加載.properties 文件中的配置
@Import 用于導入其他配置類

?

?

Spring整合Junit

①導入spring集成Junit的坐標

②使用@Runwith注解替換原來的運行期

③使用@ContextConfiguration指定配置文件或配置類

④使用@Autowired注入需要測試的對象

⑤創(chuàng)建測試方法進行測試

原文鏈接:https://blog.csdn.net/m0_59619191/article/details/124397829

欄目分類
最近更新