Spring的Java配置方式和讀取外部的配置檔案
阿新 • • 發佈:2020-11-19
java配置時spring4.x推薦的配置方式,可以完全替代xml配置。
1、註解 @Configuration 和 @Bean
spring的java配置方式是通過@Configuration和@Bean這兩個註解來實現的。
@Configuration作用在類上,相當於一個xml配置檔案;@Bean作用在方法上,相當於xml配置中的<bean>
UserServiceImpl
package com.oy.service.impl; import com.oy.service.UserService; public class UserServiceImpl implementsUserService { @Override public void getUser(Integer id) { System.out.println("id = " + id); } }
JavaConfig
package com.oy; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;import com.oy.service.UserService; import com.oy.service.impl.UserServiceImpl; @Configuration // 通過該註解來表明該類是一個spring的配置類,相當與一個xml檔案 //@ComponentScan(basePackages = {"com.oy.service.impl"}) // 配置掃描包 public class JavaConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
TestDemo
public class TestDemo { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class); UserService userService = context.getBean(UserService.class); userService.getUser(111); context.close(); } }
2、讀取外部的配置檔案
依賴
<!-- 連線池 --> <dependency> <groupId>com.jolbox</groupId> <artifactId>bonecp-spring</artifactId> <version>0.8.0.RELEASE</version> </dependency>
資料庫連線資訊db.properties
db.url=jdbc:mysql://127.0.0.1:3306/security_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 db.driverClassName=com.mysql.jdbc.Driver db.username=root db.password=
DBConfig
package com.oy; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import com.jolbox.bonecp.BoneCPDataSource; @Configuration @PropertySource(value= {"classpath:db.properties", "xxx"},ignoreResourceNotFound=true) public class DBConfig { @Value("${db.url}") private String url; @Value("${db.driverClassName}") private String driverClassName; @Value("${db.username}") private String username; @Value("${db.password}") private String password; @Bean(destroyMethod="close") public DataSource dataSource () { System.out.println("======url=" + url); BoneCPDataSource dataSource = new BoneCPDataSource(); dataSource.setDriverClass(driverClassName); dataSource.setJdbcUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); // 檢查資料庫連線池中空閒連線的間隔時間,單位分,預設240,如果要取消設定為0 dataSource.setIdleConnectionTestPeriodInMinutes(60); // 連線池中未使用的連線最大存活時間,單位分,預設60,如果要永遠存活設定為0 dataSource.setIdleMaxAgeInMinutes(30); // 每個分割槽最大連線數 dataSource.setMaxConnectionsPerPartition(100); // 每個分割槽最小連線數 dataSource.setMinConnectionsPerPartition(5); return dataSource; } }
測試資料來源是否配置成功
public class TestDemo { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DBConfig.class); DataSource dataSource = context.getBean(DataSource.class); System.out.println(dataSource); context.close(); } }
==============以上使用的是javaConfig配置==============
==============xml配置參考==============
---