Пишу небольшое приложение по работе, и надо создать класс для использования его в RestController Но дело в том, что я никак не могу получить данные из файла application.properties. Пробовал разные способы, которые советовали в интернете, ничего не помогает
Вот код класса, что я создал
package com.example.demo;
import com.sas.cas.*;
import com.sas.cas.actions.Castable;
import com.sas.cas.actions.sessionProp.SetSessOptOptions;
import com.sas.cas.actions.table.FetchOptions;
import com.sas.cas.events.CASAuthenticatedUserEventListener;
import com.sas.cas.events.CASSSLSocketEventListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.net.Socket;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
@Component
public class CASRepository {
//Параметры клиента CAS
//String host = "sasserver.demo.sas.com";
//int port = 5570;
//String username = "sasdemo";
//String password = "Orion123";
// boolean disablessl = true;
//String table = "demo";
//String vars = "air,date";
final CASClient client = new CASClient();
@Value("${client.host}")
private String host;
@Value("${client.port}")
int port;
@Value("${client.username}")
String username;
@Value("${client.password}")
String password;
@Value("${client.table}")
String table;
@Value("${client.vars}")
String vars;
@Value("${client.caslib}")
String caslib;
@Value("${client.disablessl}")
boolean disablessl;
public CASRepository() {
System.out.print(host);
//Создание клиента CAS
client.setHost(host);
client.setPort(port);
client.setUserName(username);
client.setPassword(password);
// client.setSessionID(sessionID);
//client.setNumberOfNodes(1);
//Устанавливаем caslib для текущей сессии CAS
try {
SetSessOptOptions options = new SetSessOptOptions();
options.clear();
options.setCaslib(caslib);
client.invoke(options);
} catch (CASException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Создаем UserEventListener
client.setAuthenticatedUserEventListener(new CASAuthenticatedUserEventListener() {
@Override
public void handleAuthenticatedUserEvent(CASAuthenticatedUserInfo userInfo) {
System.out.println("client.getHost() = " + client.getHost());
System.out.println("client.getPort() = " + client.getPort());
System.out.println("userInfo.getUsername() = " + userInfo.getUsername());
}
});
//Если отключаем проверку протокола SSL и у нас еще нет EventListener, то создаем его
if (disablessl && (client.getSSLSocketEventListener() == null)) {
client.setSSLSocketEventListener(new CASSSLSocketEventListener() {
@Override
public void handleSocketConnectionEvent(CASClientInterface client, Socket socket) {
}
@Override
public void handleSocketClosedEvent(CASClientInterface client, Socket socket) {
}
@Override
public SSLSocketFactory handleSSLSocketCreationEvent(CASClientInterface client, Socket socket) throws IOException {
SSLSocketFactory sf = null;
// Trust all!
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
sf = sc.getSocketFactory();
} catch (Exception ex) {
throw new IOException(ex);
}
return sf;
}
});
}
}
//Get the whole table
public List<row> gettable() throws IOException, CASException {
//создаем настройки выборки
FetchOptions opt = new FetchOptions();
Castable tble = new Castable();
tble.setName(table);
String[] vrs = getStringArrayProperty(vars);
if (vrs != null) {
tble.setParameter(Castable.KEY_VARS, vrs);
}
opt.setTable(tble);
opt.setSasTypes(false);
//выбираем данные
CASActionResults<CASValue> results = client.invoke(opt);
return dumpByRow((CASTable) results.getResult(0).getValue());
}
private String[] getStringArrayProperty(String vrs) {
String[] sa = null;
String s = vrs;
if (s != null) {
sa = s.split(",");
}
return sa;
}
private List<row> dumpByRow(CASTable t) throws IOException {
int n = Math.min(100, t.getRowCount());
List<row> list = new ArrayList<>();
row buffer = new row();
for(int row = 0; row<n; row++){
buffer.setFirst(t.getStringAt(row, 0));
buffer.setSecond(t.getStringAt(row, 1));
list.add(buffer);
}
return list;
}
//Change row in the table
}
вы обращаетесь к полям из конструктора, поэтому они еще не заполнены спрингом, либо воспользуйтесь аннотацией @PostConstruct:
@PostConstruct
public void init(){
//Создание клиента CAS
...
}
либо, используйте @Value на параметрах конструктора
public CASRepository(@Value("${client.host}") String host ...) {
Можно так
@Autowired
private Environment env;
...
env.getProperty("name");
....
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В Maven-проект необходимо добавить txt файл, из которого программа будет считывать данныеГде мне следует его хранить: в src/main/resources или создать...
Столкнулся с таким вот вопросом из списка на подготовку к собеседованию на junior java и не могу раздуплиться никак
Мне нужно допустим перекачать объект класса Example в файл и потом из файла его восстановить и присвоить обратно
В шаблоне имеется 3 блока и снизу справа стрелочки