在配置类中,我设置了连接特性:
@Configuration
@ComponentScan("com.ambre.pta")
@EnableTransactionManagement
@PropertySources({
@PropertySource("classpath:fr/global.properties"),
@PropertySource("classpath:fr/main.properties"),
@PropertySource("classpath:fr/admin.properties")
})
public class ApplicationContextConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean(name = "viewResolver")
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean(name = "dataSource")
public DataSource getDataSource() { // here is the connexion configuration
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
dataSource.setUsername("pta");
dataSource.setPassword("pta");
return dataSource;
}
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
sessionBuilder.scanPackages("com.ambre.pta.model");
return sessionBuilder.buildSessionFactory();
}
@Autowired
@Bean(name = "transactionManager")
public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
return transactionManager;
}
@Autowired
@Bean(name = "utilisateurDao")
public UtilisateurDAO getUtilisateurDao(SessionFactory sessionFactory) {
return new UtilisateurDAOImpl(sessionFactory);
}
@Autowired
@Bean(name = "menuDao")
public MenuDAO getMenuDao(SessionFactory sessionFactory) {
return new MenuDAOImpl(sessionFactory);
}
}
在我们的项目中,跟踪应用程序上的用户活动非常重要。因此,我们需要连接的用户在执行操作时在数据库中进行跟踪,例如单击菜单(调用控制器的操作)或提交表单等等...这就是为什么我们需要动态设置连接登录,因为如果它被硬编码为“pta”,那么对于每个使用该应用程序的用户来说,对于使用该应用程序的每个用户,它都会在数据库日志中写成“pta”。
我们已经创建了一个创建用户的屏幕;创建用户时,它也会在数据库(Oracle)中创建:create user xxx identified by pwd
。然后我们创建了一个屏幕,为创建的用户提供角色。
因此,当用户连接到应用程序时,我们需要与此用户建立数据库连接,但不是硬编码用户,这对所有用户保持不变。怎么做?