spring怎么配置
Spring配置主要有两种方式:
- XML配置文件
XML配置文件是Spring最早和最常用的配置方式。在XML配置文件中,可以定义bean、AOP切面、数据源、事务管理器等。
以下是一个简单的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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 定义一个bean -->
<bean id="userService" class="com.example.UserService">
<property name="userDao" ref="userDao" />
</bean>
<!-- 定义另一个bean -->
<bean id="userDao" class="com.example.UserDao">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 定义数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<!-- 定义事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 开启注解驱动的AOP -->
<aop:aspectj-autoproxy />
<!-- 定义AOP切面 -->
<aop:config>
<aop:aspect id="loggingAspect" ref="loggingAdvice">
<aop:pointcut expression="execution(* com.example.*.*(..))" />
<aop:before method="beforeAdvice" />
</aop:aspect>
</aop:config>
<!-- 定义AOP切面的实现类 -->
<bean id="loggingAdvice" class="com.example.LoggingAdvice" />
<!-- 开启注解驱动的事务 -->
<tx:annotation-driven />
</beans>
- Java配置方式
Java配置方式是Spring 3.0开始引入的一种新的配置方式。Java配置方式可以将Spring的配置代码写成Java代码,而不是XML文件。这种方式可以提高代码的可读性和可维护性。
以下是一个简单的Java配置方式的示例:
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
UserService userService = new UserService();
userService.setUserDao(userDao());
return userService;
}
@Bean
public UserDao userDao() {
UserDao userDao = new UserDao();
userDao.setDataSource(dataSource());
return userDao;
}
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager() {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource());
return transactionManager;
}
@Bean
public LoggingAdvice loggingAdvice() {
return new LoggingAdvice();
}
@Bean
public DefaultPointcutAdvisor defaultPointcutAdvisor() {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution(* com.example.*.*(..))");
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor();
advisor.setAdvice(loggingAdvice());
advisor.setPointcut(pointcut);
return advisor;
}
@Bean
public AnnotationTransactionAttributeSource transactionAttributeSource() {
return new AnnotationTransactionAttributeSource();
}
@Bean
public TransactionInterceptor transactionInterceptor() {
TransactionInterceptor interceptor = new TransactionInterceptor();
interceptor.setTransactionManager(transactionManager());
interceptor.setTransactionAttributeSource(transactionAttributeSource());
return interceptor;
}
@Bean
public BeanNameAutoProxyCreator beanNameAutoProxyCreator() {
BeanNameAutoProxyCreator creator = new BeanNameAutoProxyCreator();
creator.setInterceptorNames("transactionInterceptor");
creator.setBeanNames("*Service");
return creator;
}
}
原文地址: https://www.cveoy.top/t/topic/bwiT 著作权归作者所有。请勿转载和采集!