tensa_zangetsu
Centipat
- Katılım
- 28 Ağustos 2023
- Mesajlar
- 2.873
- Çözümler
- 11
Arkadaşlar AspectJ adlı kütüphane kullanarak Spring'de basit bir Loglama özelliği yapıyordum ama bir türlü çalıştıramadım.
Öncelikle saçma sapan bir şekilde dağınık halde yazdığım için üzgünüm, belki bundan da çalışmyordur, kusura bakmayın.
Main metodu, App sınıfında.
Veri tabanından veri çekiyor, listeliyor falan buralar çalışıyor bir hata yada başka bir sorun belirtmiyor ama hiçbir şekilde,
LogDataBaseController sınıfındaki @After, @Before ile işaretlenmiş metotlar çalışmıyor.
DataBaseController sınıfı;
LogDataBaseController sınıfı;
AppConfig Sınıfı;
App Sınıfı;
Öncelikle saçma sapan bir şekilde dağınık halde yazdığım için üzgünüm, belki bundan da çalışmyordur, kusura bakmayın.
Main metodu, App sınıfında.
Veri tabanından veri çekiyor, listeliyor falan buralar çalışıyor bir hata yada başka bir sorun belirtmiyor ama hiçbir şekilde,
LogDataBaseController sınıfındaki @After, @Before ile işaretlenmiş metotlar çalışmıyor.
DataBaseController sınıfı;
Java:
package controller;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
import model.DataBase;
import model.Student;
@Component("dataBaseController")
@Aspect
public class DataBaseController {
private Connection connect;
@Autowired
private DataBase dataBase;
public void connectDB() {
try {
connect = DriverManager.getConnection(dataBase.getUrl(), dataBase.getUser(), dataBase.getPassword());
System.out.println("Veri Tabanına bağlanıldı");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.err.println("Veritabanına bağlanılamadı");
}
}
public List<Student> moveList() {
connectDB();
List<Student> listStudent = new ArrayList<Student>();
try {
Statement stat = connect.createStatement();
ResultSet res;
res = stat.executeQuery("select no, name, surname from student");
while(res.next()) {
Student student = new Student();
student.setName(res.getString("name"));
student.setSurName(res.getString("surname"));
student.setNo(res.getInt("no"));
listStudent.add(student);
}
}catch(Exception e) {
System.err.println("Hata 1 - Listeye eklenemedi");
}
return listStudent;
}
public DataBase getDataBase() {
return dataBase;
}
public void setDataBase(DataBase dataBase) {
this.dataBase = dataBase;
}
}
LogDataBaseController sınıfı;
Java:
package model;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LogDataBaseController {
@Before("execution (* moveList(..))")
public void listBefore() {
System.out.println("Listeye veri ekleniyor");
}
}
AppConfig Sınıfı;
Java:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import model.DataBase;
@Configuration
@ComponentScan(basePackages = {"model" , "controller"})
@EnableAspectJAutoProxy (proxyTargetClass = true)
public class AppConfig {
}
App Sınıfı;
Java:
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import controller.DataBaseController;
import controller.StudentController;
import model.DataBase;
import model.Student;
public class App {
public static void main(String[] args) {
ApplicationContext cac = new AnnotationConfigApplicationContext(AppConfig.class);
DataBase dataBase = (DataBase) cac.getBean("dataBase");
dataBase.setUser("root");
dataBase.setUrl("jdbc:mysql://localhost:3306/personel");
dataBase.setPassword("");
DataBaseController dataBaseController = (DataBaseController) cac.getBean("dataBaseController");
dataBaseController.connectDB();
StudentController studentController = (StudentController) cac.getBean("studentController");
studentController.setStudentList(dataBaseController.moveList());
studentController.Listing();
}
}
Son düzenleme: